java - 为什么我在尝试访问 RabbitMQ 中的 URL 时会出现 Channel 错误?
问题描述
我是 RabbitMQ 的新手,我正面临通道错误。我的程序非常简单明了:
配置文件:
spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
javainuse.rabbitmq.exchange=javainuse.exchange
javainuse.rabbitmq.queue=javainuse.queue
javainuse.rabbitmq.routingkey=javainuse.routingkey
server.port=8081
下面是类RabbitMQConfig.java
。此类包含以下 bean :Queue
、DirectExchange
和.Binding
MessageConverter
@Configuration
public class RabbitMQConfig {
@Bean("myTemplate")
public AmqpTemplate rabbitTemplate(ConnectionFactory connectionFactory) {
final RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory);
rabbitTemplate.setMessageConverter(jsonMessageConverter());
return rabbitTemplate;
}
}
下面是类RabbitMQSender.java
。它调用myTemplate
以将消息发送到队列。
@Service
public class RabbitMQSender {
public void send(Person person) {
rabbitTemplate.convertAndSend(exchange, routingkey, person);
System.out.println("Send msg = " + person);
}
}
下面是控制器,即RabbitController.java
。这是我项目中唯一的控制器。
public class RabbitController {
@GetMapping(value = "/producer")
public String producer(@RequestParam("empName") String empName, @RequestParam("empId") String empId) {
person.setName(empName);
person.setId(empId);
rabbitMQSender.send(person);
return "Message sent to the RabbitMQ JavaInUse Successfully";
}
}
我有一个 Pojo,即只有两个变量 id 和 name 的 Person。但是,当我尝试点击以下 URL 时,会创建队列:
http://localhost:8081/javainuse-rabbitmq/producer?empName=Ria&empId=emp003
我相信这是一个愚蠢的错误。请帮我解决这个问题。
解决方案
我相信您已经像这样定义了您的Exchange bean:
@Bean
public DirectExchange exchange(@Value("{javainuse.rabbitmq.exchange}") String exchangeName) {
// ...
}
您错过了$登录@Value
。尝试像这样定义bean:
@Bean
public DirectExchange exchange(@Value("${javainuse.rabbitmq.exchange}") String exchangeName) {
// ...
}
推荐阅读
- c# - 如何使用 Web 服务在数据库中插入数据?
- javascript - 简单堆积的行图
- java - 在 appium 中使用 x,y 坐标点击时可以收集元素的属性吗?
- reactjs - 有时我没有道具时如何为 onChange 添加功能?
- swift - Swift:写入数据如何知道何时完成 Cocoa
- angular - 使用 ngClass 动画更改类状态
- parameters - 避免重载解析中的歧义
- android - OnCreate 方法不断调用 OnResume 方法
- wpf - 重新连接 RDP 时 WPF 应用程序更新布局
- javascript - 服务器端代码无法识别我的 req.body.variable,说明它未定义