• RabbitMQ: topic 结构


    生产者 

    1. package com.qf.mq2302.topic;
    2. import com.qf.mq2302.utils.MQUtils;
    3. import com.rabbitmq.client.Channel;
    4. import com.rabbitmq.client.Connection;
    5. public class Pubisher {
    6. public static final String EXCHANGE_NAME="mypubilisher";
    7. public static void main(String[] args) throws Exception {
    8. Connection connection = MQUtils.getConnection();
    9. Channel channel = connection.createChannel();
    10. channel.exchangeDeclare(EXCHANGE_NAME,"topic");
    11. String msg="好好学习";
    12. String routingkey="lazy.orange.rabbit";
    13. channel.basicPublish(EXCHANGE_NAME,routingkey,null,msg.getBytes("utf-8"));
    14. channel.close();
    15. connection.close();
    16. }
    17. }

    消费者1

    1. package com.qf.mq2302.topic;
    2. import com.qf.mq2302.utils.MQUtils;
    3. import com.rabbitmq.client.Channel;
    4. import com.rabbitmq.client.Connection;
    5. import com.rabbitmq.client.DeliverCallback;
    6. import com.rabbitmq.client.Delivery;
    7. import java.io.IOException;
    8. public class MyConsumer01 {
    9. public static final String EXCHANGE_NAME="mypubilisher";
    10. public static void main(String[] args) throws Exception {
    11. Connection connection = MQUtils.getConnection();
    12. Channel channel = connection.createChannel();
    13. channel.exchangeDeclare(EXCHANGE_NAME,"topic");
    14. String queue = channel.queueDeclare().getQueue();
    15. channel.basicQos(1);
    16. //绑定队列和交换机
    17. String routingkey="*.orange.*";
    18. channel.queueBind(queue,EXCHANGE_NAME,routingkey);
    19. channel.basicConsume(queue, false, new DeliverCallback() {
    20. @Override
    21. public void handle(String consumerTag, Delivery message) throws IOException {
    22. byte[] body = message.getBody();
    23. String s = new String(body, "utf-8");
    24. System.out.println(s);
    25. channel.basicAck(message.getEnvelope().getDeliveryTag(),false);
    26. }
    27. },consumerTag -> {});
    28. }
    29. }

    消费者2

    1. package com.qf.mq2302.topic;
    2. import com.qf.mq2302.utils.MQUtils;
    3. import com.rabbitmq.client.Channel;
    4. import com.rabbitmq.client.Connection;
    5. import com.rabbitmq.client.DeliverCallback;
    6. import com.rabbitmq.client.Delivery;
    7. import java.io.IOException;
    8. public class MyConsumer02 {
    9. public static final String EXCHANGE_NAME="mypubilisher";
    10. public static void main(String[] args) throws Exception {
    11. Connection connection = MQUtils.getConnection();
    12. Channel channel = connection.createChannel();
    13. channel.exchangeDeclare(EXCHANGE_NAME,"topic");
    14. String queue = channel.queueDeclare().getQueue();
    15. channel.basicQos(1);
    16. //绑定队列和交换机
    17. String routingkey2="*.*.rabbit";
    18. String routingkey3="lazy.#";
    19. channel.queueBind(queue,EXCHANGE_NAME,routingkey3);
    20. channel.queueBind(queue,EXCHANGE_NAME,routingkey2);
    21. channel.basicConsume(queue, false, new DeliverCallback() {
    22. @Override
    23. public void handle(String consumerTag, Delivery message) throws IOException {
    24. byte[] body = message.getBody();
    25. String s = new String(body, "utf-8");
    26. System.out.println(s);
    27. channel.basicAck(message.getEnvelope().getDeliveryTag(),false);
    28. }
    29. },consumerTag -> {});
    30. }
    31. }

  • 相关阅读:
    zookeeper的安装与配置和启动闪退问题的解决(win)
    【k8s管理--两种方式安装prometheus】
    一款清理本地仓库jar包的maven插件
    C++ Primer Plus 第六章笔记
    计算机毕业设计之java+javaweb社区共享食堂信息系统
    26.cuBLAS开发指南中文版--cuBLAS中的Level-2函数syr()
    JAVA 读写文件(InputStream,FileReader)
    操作EXCEL计算3万条数据的NDVI并填入
    Pycharm设置项目的python环境与界面上terminal的shell运行环境
    可重入锁思想,设计MQ迁移方案
  • 原文地址:https://blog.csdn.net/qq_53374893/article/details/132743282