当前位置:   article > 正文

RabbitMq 实现一条消息被多个客户端消费_rabbitmq队列中的消息需要被两个应用消费,怎么处理

rabbitmq队列中的消息需要被两个应用消费,怎么处理

RabbitMQ接口分为 通道、交换器、路由、和队列4个模块

生产者/消费者连接消息队列,创建通道,创建交换器,创建队列。把队列绑定到交换器上。

生产者发送消息到交换器,交换器根据路由把消息转到不同队列上。

消费者创建通道后,指定交换器,路由,和队列。

交换器:

DIRECT("direct"), FANOUT("fanout"), TOPIC("topic"), HEADERS("headers");

测试代码

  1. package com.cn.rabbitmq.cp1.exchange;
  2. import com.rabbitmq.client.Connection;
  3. import com.rabbitmq.client.ConnectionFactory;
  4. import com.rabbitmq.client.impl.ErrorOnWriteListener;
  5. import java.io.IOException;
  6. public class BaseQueue {
  7. public static Connection getConnection() throws Exception{
  8. ConnectionFactory factory = new ConnectionFactory();
  9. factory.setHost("127.0.0.1");
  10. factory.setUsername("guest");
  11. factory.setPassword("guest");
  12. factory.setErrorOnWriteListener(new ErrorOnWriteListener() {
  13. public void handle(Connection connection, IOException exception) throws IOException {
  14. }
  15. });
  16. return factory.newConnection();
  17. }
  18. }

服务端发送消息:

  1. package com.cn.rabbitmq.cp1.exchange.topic;
  2. import com.cn.rabbitmq.cp1.exchange.BaseQueue;
  3. import com.rabbitmq.client.*;
  4. import java.io.IOException;
  5. import java.util.HashMap;
  6. import java.util.Map;
  7. import java.util.Random;
  8. /**
  9. * 队列参数说明:
  10. * 队列名称 queue :队列名
  11. * 是否持久队列 durable :true 持久队列,该队列将在服务器重新启动后继续存在。当然了,队列的消息内容也会被写入磁盘
  12. * 是否独占队列 (单消费者队列)exclusive : 如果需要消费者独占队列,在队列创建的时候,设定属性exclusive为true。 只能有一个消费者
  13. * 是否自动删除 autoDelete :自动删除队列,客户端连接时自动删除。 服务端会连接会不会删除?
  14. *
  15. *
  16. * 其他参数 arguments
  17. * 参数名 目的
  18. * x-dead-letter-exchange 死信交换器
  19. * x-dead-letter-routing-key 死信消息的可选路由键
  20. * x-expires 队列在指
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/1002619
推荐阅读
相关标签
  

闽ICP备14008679号