- 端口的使用
5672为程序中链接rabbitmq,15672为网页端访问rabbitmq控制台的端口,默认不允许guest登录; - 各模式下的一些配置情况:
- 在发布/订阅(Pub/Sub)模式下:
交换机类型为:fanout - 在Routing(路由)模式下:
交换机类型为:direct
此模式下可通过routingKey进行消息的不同消费者的接收 - 在topic模式下:
交换机类型为topic
#:匹配一个或多个
*:匹配一个
在springboot中,如果是使用实体类进行数据的生产及消费则需要保证序列化后的实体类在消费者和生产者中的路径需保持一致,因为其使用的是JDK进行的序列化。
以下是springboot中交换机和队列,及其绑定的相关代码:
@Configuration
public class RabbitConfig {
@Bean
public TopicExchange topicExchange() {
return new TopicExchange(这里是交换机名,自己定义,但需要和消费者保持一致);
}
@Bean
public Queue queue() {
/**
* durable="true" 持久化 rabbitmq重启的时候不需要创建新的队列
* exclusive 表示该消息队列是否只在当前connection生效,默认是false
* auto-delete 表示消息队列没有在使用时将被自动删除 默认是false
*/
return new Queue(这里是队列名, true, false, false);
}
// 绑定交换机和队列
@Bean
public Binding binding() {
return BindingBuilder.bind(queue()).to(topicExchange()).with(RabbitConstant.ROUTIN_KEY);
}
}
以下是生产者发送消息的代码:
@Component
public class Producer {
@Resource
private RabbitTemplate rabbitTemplate;
RabbitTemplate.ConfirmCallback confirmCallback = new RabbitTemplate.ConfirmCallback() {
@Override
/**
* CorrelationData 消息的附加信息,即自