我有一个POST请求,我在Postman中使用它来更改设备的状态,当我直接通过Postman发出请求时,它似乎可以工作,但是我无法使其与RabbitMQ一起工作。
这是我的邮递员
&&
这是我的RabbitMQ请求
||
关于为什么不起作用的任何想法,我真的是RabbitMQ的新手,我看不到我犯了一个错误。
答案 0 :(得分:1)
您的路由密钥变量是routingKey = fakeid.test,队列变量将是testQ = testQfakeid.test
一种方法语法,
void basicPublish(String exchange, String routingKey, BasicProperties props, byte[] body)
您正在使用
channel.basicPublish("SOCKET_PROXY_EXCHANGE", testQ, null, payload.getBytes());
应该是
channel.basicPublish("SOCKET_PROXY_EXCHANGE", routingKey, null, payload.getBytes());
路由键,而不是队列。
发布时,我们只需要路由键和交换名称,根据与该交换绑定的内容,它将根据交换类型路由到该队列
RabbitMQ队列,Exchange以及它们之间的绑定可以通过使用 Rabbitmq管理控制台或通过进行编码。
如何通过代码创建队列,交换和绑定队列,
String exchangeName= "SOCKET_PROXY_EXCHANGE";
channel.queueDeclare(testQ, false, false, false, null);
channel.exchangeDeclare(exchangeName, "direct", true);
channel.queueBind(testQ, exchangeName, routingKey);
channel.basicPublish(exchangeName, routingKey, null, payload.getBytes());
// channel.queueDelete(testQ);
channel.close();
您可以引用RabbitMQ的Exchange,队列以及它们之间的绑定,文档中的Exchange类型。