[rabbitmq-discuss] Cannot get MQTT->AMQP to work
Dejan Glozic
dejan.glozic at gmail.com
Wed Apr 16 23:29:41 BST 2014
I am banging my head on my desk the whole afternoon trying to figure this
out. I am trying to publish a message into an MQTT topic using Eclipse MQTT
Paho client, and receive it using RabbitMQ AMQP Java client.
I am using RabbitMQ for Windows, version 3.2.4.
>From what I was reading, MQTT plug-in will publish into the default
'amq.topic' exchange, and I can bind a queue to that exchange and start
listening.
When I publish a message into the exchange using AMQP client, the AMQP
client on the receiving end will get it.
When I publish a message using MQTT client, another MQTT client on the
receiving end will get it.
But for the love of God I cannot get the cross-protocol to work.
Here is the MQTT client that publishes:
MqttClient client;
*try* {
client = *new* MqttClient("tcp://"+host+":1883", "pahomqttpublish1");
client.connect();
MqttMessage message = *new* MqttMessage(messageText.getBytes());
client.publish(queueName, message);
System.*out*.println(" [x] Sent to MQTT topic '" +queueName+"': "+
message + "'");
client.disconnect();
} *catch* (MqttException e) {
// *TODO* Auto-generated catch block
e.printStackTrace();
}
And here is the AMQP client that is supposed to receive it:
public static final String QUEUE_NAME="workerQueue";
*public* *static* *void* main(String[] args) *throws* IOException,
InterruptedException {
ConnectionFactory factory = *new* ConnectionFactory();
factory.setHost("localhost");
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
channel.queueDeclare(QUEUE_NAME, *true*, *false*, *false*, *null*);
channel.queueBind(QUEUE_NAME, "amq.topic", "builds");
System.*out*.println(" [*] Waiting for messages. To exit press CTRL+C");
QueueingConsumer consumer = *new* QueueingConsumer(channel);
channel.basicConsume(QUEUE_NAME, *true*, consumer);
* while* (*true*) {
QueueingConsumer.Delivery delivery = consumer.nextDelivery();
String message = *new* String(delivery.getBody());
String routingKey = delivery.getEnvelope().getRoutingKey();
System.*out*.println(" [x] Received '" + routingKey + "':'" + message
+ "'");
}
}
The client above will receive the message when published into "amq.topic"
exchange by another AMQP client.
Anything stupid and obvious I am missing?
Dejan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/attachments/20140416/3d35961c/attachment.html>
More information about the rabbitmq-discuss
mailing list