zoukankan      html  css  js  c++  java
  • SpringBoot JMS(ActiveMQ) 使用实践

    原文:https://blog.csdn.net/qiangcuo6087/article/details/79041997

    ActiveMQ

    1. 下载windows办的activeMQ后,在以下目录可以启动:

    spring

    2. 启动后会有以下提示

    spring

    3. 所以我们可以通过http://localhost:8161访问管理页面,通过tcp://localhost:61616来连接消息服务器,用到的用户名和密码都在以下文件中(默认为admin=admin)

    spring

    springboot连接ActiveMQ

    1. 加入依赖:

    spring-boot-starter-activemq

    2. 配置连接属性:

    spring

    消息的发送和接收

    生产者/消费者模式

    1. 创建生产者

    spring

    2. 创建消费者

    spring

    注意: @JmsListener是一个可重复的注解,在java7及以下版本jdk中,可以使用@JmsListeners代替它。

    3. 测试类

    spring

    4. 运行测试

    spring

    发布/订阅模式

    1. 发布话题

    spring

    2. 订阅话题

    spring

    注意: 在pub/sub模式中,对消息的监听需要对containerFactory进行以下配置

    spring

    3. 测试

    spring

    spring

    应用

    按照以上步骤,在springboot中很容易就实现类两种模式的消息发送和接收。但是jms具体的应用场景是在不同的应用程序之间,生产者和消费者往往是在不同的应用中的。此外,以上例子中的消息我们只发送字符串,其实还可以发送Object类型的消息,甚至可以使用messageCreator自定义消息的转换,而不使用convertAndSend方法默认转换。

    多个应用程序之间发送消息

    1. 先使用一个只有发送者,没有消费者或订阅者的应用发送两类消息各十条

    spring

    spring

    2. 我们打开localhost:8161,可以看到

    spring

    spring

    两类都曾有十条消息入队,但只有queues中还存留10条消息。

    3. 现在我们启动包含消费者和订阅者的应用程序

    spring

    果然,只有消费者收到了queues中的消息。

    这说明订阅者接收topic是需要在topic发布之前订阅;而生产/消费模式下,消息发出后会存放在队列中,等待消费者消费。

    4. 我们先启动两个包含订阅者和消费者的程序,再发布消息

    spring

    spring

    spring

    两个订阅者都收到 topic message 1~9, 而消费者中,一个收到消息 1、3、5、7、9,另一个收到0、2、4、6、8。

    这说明有多个消息接收者时,生产/消费模式下多个消费者会轮流消费队列中的消息,而pub/sub模式下所有订阅者都会得到所有的消息。

  • 相关阅读:
    PHP 实现定时任务的几种方法
    ueditor 文本编辑器
    CodeIgniter 如何去掉 Index.php
    php 后台权限例子 (mysql 数据表)
    php ajax 下拉加载数据
    Codeforces 931.D Peculiar apple-tree
    Codeforces 931.C Laboratory Work
    Codeforces 932.F Escape Through Leaf
    bzoj2325 [ZJOI2011]道馆之战
    bzoj3611 [Heoi2014]大工程
  • 原文地址:https://www.cnblogs.com/shihaiming/p/9407306.html
Copyright © 2011-2022 走看看