【问题标题】:How to send data from MQTT to AMQP如何将数据从 MQTT 发送到 AMQP
【发布时间】:2017-12-18 08:02:48
【问题描述】:

提前致谢!

我在 Raspberry-Pi 上安装了 Mqtt,并将传感器数据发布到端口 1883 上的 mqtt。使用 Paho 客户端发布的数据在接收端进行验证。

现在我在 Windows7 上安装了 RabbitMQ。如何将数据从 mqtt 发送到 rabbitmq。

String brokerUrlRpi_Mqtt = "tcp://localhost:1883";
String clientId="ExamplePublish";
String channel = "SensorIntegratedData";
int qos=0;

public void publish(String data) throws MqttPersistenceException, MqttException {
  String time = new Timestamp(System.currentTimeMillis()).toString();
  System.out.println("Publishing at: "+time+ " to topic \""+channel+"\" qos "+qos);
  MqttMessage message = new MqttMessage(data.getBytes());
  message.setQos(qos);
  message.setRetained(false);
  client.publish(channel, message);
  // Disconnect the client
}   

Mqtt 连接是默认的,没有凭据。现在我如何向 RabbitMQ 发送数据。

【问题讨论】:

  • 你已经尝试过什么?另外,您是什么意思“安装了 MQTT”?我假设你的意思是你已经安装了一个 MQTT 代理,很可能是 mosquitto
  • 是的,没错!我的意思是 Mosquitto 代理安装在 R-Pi 上。我正在尝试将超声波传感器数据发送到 mqtt。使用 eclipse paho 客户端,我检查已收到的已发布数据。

标签: java rabbitmq mqtt


【解决方案1】:

您所描述的是一个 MQTT 桥。您可以在您的 pi 上配置 mosquitto 实例以连接到 RabbitMQ 代理(假设它配置为支持 MQTT)。

有关如何配置网桥的详细信息,请参见 mosquitto.conf 手册页 here

基本上,您需要在配置中添加如下内容。

connection rabbitmq
address ip-of-rabbitmq
cleansession true
topic # out 0

【讨论】:

  • 谢谢,但它不起作用,我给出的 IP 地址是 windows7 wifi 详细信息 IPV4 地址和“topic # both 0 /”
  • 您 100% 确定您的 RabbitMQ 设置了 MQTT 支持?
  • 嗯,我启用了插件并使用 java api amqp 客户端建立了连接。我设置了以下属性,用户名(默认访客),密码(访客),setVirtualHost(“/”),setHost(windows的ipv4地址),setPort(5672)。
【解决方案2】:

通过从命令提示符运行命令在 rabbitmq 上启用 mqtt 插件 打开Rabbitmq/sbin的cmd提示路径,windows默认为C:\Program Files\RabbitMQ Server\rabbitmq_server-3.6.9\sbin,然后运行命令。

"rabbitmq-plugins 启用 rabbitmq_mqtt"

我们需要设置Topic,运行rabbitmq的服务器系统的url。 发送随机clientId。 将 Qos 设置为 0 OR 1 OR 2

String topic = "amq.topic"; String brokerUrlRpi_Mqtt = "tcp://192.168.xxx.xxx:1883/"; String clientId=UUID.randomUUID().toString();

如果您从不同的系统发送 mqtt 数据,用户名和密码应该是在 rabbitmq 中创建的新用户。 如果 mqtt 和 rabbitmq 在本地运行,那么访客用户名和密码就可以了。

`

public  SendDataUsingMQTT() throws MqttException {
            String tmpDir = System.getProperty("java.io.tmpdir");
//          MqttDefaultFilePersistence dataStore = new MqttDefaultFilePersistence(tmpDir);
            try {
              conOpt = new MqttConnectOptions();
              conOpt.setUserName("username");
              conOpt.setPassword(new String("password").toCharArray());
              conOpt.setCleanSession(true);
            client = new MqttClient(brokerUrlRpi_Mqtt,clientId, datastore);

 client.setCallback(new MqttCallback() { 

// add all anonymous implemented methods of connect
 public void messageArrived(String arg0, MqttMessage arg1) throws Exception {

//
}
public void deliveryComplete(IMqttDeliveryToken arg0) { }
 public void connectionLost(Throwable arg0) {}
}
catch (MqttException e) {
            e.printStackTrace();
            System.out.println("Unable to set up client: "+e.toString());
            System.exit(1);
          }               
          }

'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-14
    • 2013-06-21
    • 2015-05-10
    相关资源
    最近更新 更多