• RabbitMQ消息中间件


    安装:

    第一步. 安装Socat

    在线安装依赖环境:

    直接运行:

    yum install gcc

    yum install socat

    yum install openssl
    yum install openssl-devel

    第二步 安装Erlang

    在虚拟机新建文件夹,将压缩包传入文件夹,然后进入文件夹

    解压:

    rpm -ivh erlang-22.0.7-1.el7.x86_64.rpm

    第三步 安装RabbitMQ

    上传压缩包,将压缩包放在上一步同一个文件夹;

    rpm -ivh rabbitmq-server-3.7.17-1.el7.noarch.rpm

    第四步 开启管理界面及配置

    # 开启管理界面
    rabbitmq-plugins enable rabbitmq_management

    # 配置远程可使用guest登录mq
    cd /usr/share/doc/rabbitmq-server-3.7.17

    cp rabbitmq.config.example /etc/rabbitmq/rabbitmq.config

    # 修改配置文件
    vi /etc/rabbitmq/rabbitmq.config

     修改文件:

    第五步 启动

    centos6用这个命令:
    /sbin/service rabbitmq-server restart

    centos7用这个命令:
    systemctl start rabbitmq-server

    第六步 配置虚拟主机及用户

    RabbitMQ在安装好后,可以访问http://ip地址:15672 ;其自带了guest/guest的用户名和密码;如果需要创建自定义用户;那么也可以登录管理界面后,如下操作:

     登陆成功接界面:

    使用idea连接

    使用普通的maven工程连接测试:

    (1)   simple 简单模式 

    P: 一个生产者

    C: 一个消费者

    Q: 队列

    创建一个maven工程:

    添加依赖:

    
        com.rabbitmq
        amqp-client
        5.13.1
        compile
    

    定义生产者代码:

    1. public class Test01 {
    2. public static void main(String[] args) throws Exception{
    3. ConnectionFactory factory = new ConnectionFactory();
    4. //设置rabbitMQ服务器的地址 默认localhost
    5. factory.setHost("192.168.92.241");
    6. //设置rabbitMQ的端口号 默认5672
    7. factory.setPort(5672);
    8. //设置账号和密码 默认guest
    9. factory.setUsername("guest");
    10. factory.setPassword("guest");
    11. //设置虚拟主机名 默认为 /
    12. factory.setVirtualHost("/");
    13. //获取连接通道
    14. Connection connection = factory.newConnection();
    15. //获取channel信道
    16. Channel channel = connection.createChannel();
    17. //创建队列
    18. /**
    19. * 如果该队列名不存在则自动创建,存在则不创建
    20. * String queue,队列名
    21. * boolean durable,是否持久化
    22. * boolean exclusive,(独占)声明队列同一时间只能保
    23. 证一个连接,且该队列只有被这一个连接使用。
    24. * boolean autoDelete,是否自动删除
    25. * Map arguments: 其他参数
    26. * */
    27. channel.queueDeclare("simple_queue",true,false,false, null);
    28. //发送消息到队列
    29. /**
    30. * String exchange,把消息发给哪个交换机--简单模式没
    31. 有交换机""
    32. * String routingKey,消息绑定的路由key 如果为简单模
    33. 式 默认写为队列名称
    34. * BasicProperties props, 消息的属性
    35. * byte[] body: 消息的内容
    36. */
    37. String msg="hello world";
    38. channel.basicPublish("","simple_queue",null,msg.getBytes());
    39. connection.close();
    40. }
    41. }

     测试:

    启动后进入RabbitMQ的ui界面,

     

     定义消费者代码

    1. public class Testxfz1 {
    2. public static void main(String[] args) throws Exception{
    3. ConnectionFactory factory = new ConnectionFactory();
    4. //设置rabbitMQ服务器的地址 默认localhost
    5. factory.setHost("192.168.92.241");
    6. //设置rabbitMQ的端口号 默认5672
    7. factory.setPort(5672);
    8. //设置账号和密码 默认guest
    9. factory.setUsername("guest");
    10. factory.setPassword("guest");
    11. //设置虚拟主机名 默认为 /
    12. factory.setVirtualHost("/");
    13. //获取连接通道
    14. Connection connection = factory.newConnection();
    15. //获取channel信道
    16. Channel channel = connection.createChannel();
    17. //监听队列
    18. /**
    19. * String queue,监听的队列名称
    20. * autoAck:是否自动确认消息
    21. * Consumer callback: 监听到消息后触发的回调函数
    22. */
    23. DefaultConsumer consumer = new DefaultConsumer(channel){
    24. @Override
    25. /*一旦有消息就会触发该方法*/
    26. //body:表示消息的内容
    27. public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
    28. System.out.println("接受的消息内容:"+new String(body));
    29. }
    30. };
    31. channel.basicConsume("simple_queue",true,consumer);
    32. }
    33. }

     

     

    注意: 不要关闭消费者连接对象,因为他要实时监听消息,生产者每发送消息,他都能及时获取。

  • 相关阅读:
    WEBAPIS知识案例总结(续)
    Python做点击率数据预测
    [科普文] Web3 中的资产负债表
    训练营第三十五天动态规划(基础题part1)
    Connor学Android - Android消息机制
    面试经典刷题)挑战一周刷完150道-Python版本-第2天(22个题)
    Go语言用Colly库编写的图像爬虫程序
    [附源码]Python计算机毕业设计Django演唱会门票售卖系统
    <<Java语言程序设计>>进阶篇 Exercise22_3
    输入/输出的实用性-SOLIDWORKS 2024新功能
  • 原文地址:https://blog.csdn.net/weixin_43766390/article/details/126934570