大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

JMS&ActiveMQ教程
基于JMS的消息傳送
ActiveMQ與Spring集成
ActiveMQ與SpringBoot集成
ActiveMQ安全機制
ActiveMQ主從集群

ActiveMQ與SpringBoot消息接收方式

同步接收

jmsTemplate.receive()

一個線程在工作,沒接收到就等待,接收到了就往下執行直到程序結束;

如果想循環不斷地接收,那么就寫個while true循環。

異步接收

使用監聽器監聽ActiveMQ目的地,當有消息的時候,回調onMessage方法對消息進行處理,ActiveMQ與SpringBoot集成異步接收消息有兩種實現方式。

1、@JmsListener注解方式實現

A、 創建SpringBoot工程13-activemq-boot-receiver-async-01

B、 創建的工程的時候,勾選集成ActiveMQ,會在pom.xml中添加如下依賴

<!--SpringBoot集成ActiveMQ的起步依賴-->
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-activemq</artifactId>
</dependency>

C、 在application.properties文件中配置ActiveMQ信息

#配置activemq的連接信息
spring.activemq.broker-url=tcp://192.168.235.128:61616
#目的地
spring.jms.template.default-destination=bootQueue
#默認是緩存了jms的session的,所以主程序發送完消息后,不會退出
# 改為false主程序才可以退出 從SpringBoot2.1.0以后新增的
spring.jms.cache.enabled=false

D、 在com.bjpowernode.activemq.service包下創建MessageService類接收消息

@Service
public class MessageService {
    /**
     * SpringBoot程序啟動后,會掃描到當前service類
     * 監聽器對象會被創建
     * 通過注解指定了該監聽器對象監聽的目的地
     * 如果目的地上有消息需要接收,會調用我們自定義的方法,并傳遞接收到的消息到方法中
     * 方法名可以任意
     */
    @JmsListener(destination="${spring.jms.template.default-destination}")
    public void receiveMessage(Message message){
        if(message instanceof TextMessage){
            try {
                String text = ((TextMessage) message).getText();
                System.out.println("SpringBoot異步接收到的消息為:" + text);
            } catch (JMSException e) {
                e.printStackTrace();
            }
        }
    }
}

E、 運行Application程序,發送一個消息,查看接收效果

2、@Configuration配置方式實現

這種方式其實就是將spring接收異步請求需要配置的xml文件信息,放到配置類中。

A、 創建SpringBoot工程13-activemq-boot-receiver-async-02

B、 創建的工程的時候,勾選集成ActiveMQ,會在pom.xml中添加如下依賴

<!--SpringBoot集成ActiveMQ的起步依賴-->
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-activemq</artifactId>
</dependency>

C、 在application.properties文件中配置ActiveMQ信息

#配置activemq的連接信息
spring.activemq.broker-url=tcp://192.168.235.128:61616
#目的地
spring.jms.template.default-destination=bootQueue
#默認是緩存了jms的session的,所以主程序發送完消息后,不會退出
# 改為false主程序才可以退出 從SpringBoot2.1.0以后新增的
spring.jms.cache.enabled=false

D、 自定義監聽器接收處理消息(可以從12-activemq-spring-receiver-async拷貝)

該監聽器沒有在配置文件中注冊bean,所有需要加@Component讓Spring容器掃描

E、 在com.bjpowernode.activemq.config包下創建ActiveMQConfig類,用于替換我們前面在applicationContex-jms中配置的信息

@Configuration//相當于applicationContext-jms.xml文件
public class ActiveMQConfig {
    /*
        <!-- 配置一個連接工廠 -->
         <bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
         <property name="brokerURL" value="tcp://192.168.235.128:61616"/>
         </bean>
        因為SpringBoot已經自動配置好了ActiveMQ的連接工廠,所有我們在配置文件中就不需要對這個bean進行配置
        我們在使用的時候,直接注入即可
     */
    @Autowired
    private ActiveMQConnectionFactory connectionFactory;

    @Autowired //注入我們自定義的監聽器
    private MyMessageListener myMessageListener;

    //通過@Value注解接收SpringBoot配置文件中的目的地配置
    @Value("${spring.jms.template.default-destination}")
    private String destination;

    /**
         <!-- 配置一個sping監聽器的容器 -->
         <bean class="org.springframework.jms.listener.DefaultMessageListenerContainer">
         <!--引用連接工廠-->
         <property name="connectionFactory" ref="connectionFactory"/>
         <!--指定監聽的目的地-->
         <property name="destinationName" value="springQueue"/>
         <!--監聽到消息后,會回調onMessage方法,我們在自定義的監聽器中對onMessage方法進行重寫,完成消息的接收-->
         <property name="messageListener" ref="myMessageListener" />

         <!--pubSubDomain=false表示點對點消息,true表示發布訂閱消息,默認是false-->
         <property name="pubSubDomain" value="true"/>
         </bean>
     */
    @Bean //@Bean注解就相當于配置文件的bean標簽
    public DefaultMessageListenerContainer defaultMessageListenerContainer(){
        DefaultMessageListenerContainer listenerContainer = new DefaultMessageListenerContainer();
        listenerContainer.setConnectionFactory(connectionFactory);
        listenerContainer.setDestinationName(destination);
        listenerContainer.setMessageListener(myMessageListener);
        //目前我們默認就是點對點的消息,暫時不配置發布訂閱
        return listenerContainer;
    }
}

 F、 運行Application程序,發送一個消息,查看接收效果

全部教程
主站蜘蛛池模板: 日韩精品麻豆 | 欧美综合天天夜夜久久 | 久久久99精品 | 精品久久久在线观看 | 久久久久久久九九九九 | 中文字幕视频免费在线观看 | 中文字幕在线亚洲精品 | 97av麻豆蜜桃一区二区 | 欧美日韩中文视频 | 亚洲成人精品久久 | 欧美一级视频在线 | 欧美性在线播放 | 亚洲在线视频免费 | 中文乱码在线观看 | 久揄揄鲁一二三四区高清在线 | 66精品综合久久久久久久 | 一区二区三区免费在线视频 | 成人免费xxx色视频 成人免费播放视频777777 | 天天天操 | 久久青草免费91线频观看站街 | 日本精品一区二区三区在线观看 | 天天操天天射天天 | 日韩一区二区三区不卡 | 欧美日韩国产58香蕉在线视频 | 亚洲天堂三区 | 欧美日韩视频精品一区二区 | 成人在色线视频在线观看免费大全 | 一本岛高清v不卡免费一三区 | 亚洲人成网站999久久久综合 | 色播综合网 | 亚洲欧美精品一中文字幕 | 日日噜噜夜夜狠狠tv视频免费 | 一级做受毛片免费大片 | 国产精品久久久久久久牛牛 | 国产高清一区二区 | 国语一区| 四虎影院紧急入口 | 天天舔天天 | 四虎在线最新永久免费 | 久久婷婷综合在线视频观看6 | 毛片毛片毛片毛片出来毛片 |