JMS 消息服務

JMS  是基於消息代理的規範,而ActiveMQ,HornetQ 是一個JMS 消息代理的實現java

AMQP 也是一個消息代理的規範,但它不只兼容JMS 還支持跨語言和跨平臺。AMQP 的主要實現有RabbitMQspring

 

隊列/主題:點對點/發佈與訂閱docker

消息代理:message-brokerapache

目的地:destinationapi

 

須要實現:connectionFactoryspringboot

 

spring 支持:@JmsListenner、@RabbitListenersession

開啓:@EnableJms、@EnableRabbittcp

 

springboot:自動配置,實現ActiveMQ、HornetQide

實現ActiveMQConnectionFactory、JmsTemplate測試

 

安裝:

docker search activemq

docker pull cloudesire/activemq

docker run -d -p 61616:61616 -p 8161:8161 cloudesire/activemq --name activemq

8161 端口爲管理界面映射端口。

http訪問:localhost:8161

 

 

添加依賴(使用activeMQ):

 

配置activemq

# activeMQ
spring.activemq.broker-url=tcp://localhost:61616
spring.activemq.user=
spring.activemq.password=
spring.activemq.in-memory=true
spring.activemq.pool.enabled=false

 

添加依賴

    implementation 'org.springframework:spring-jms'
    implementation 'org.apache.activemq:activemq-client'
    implementation 'org.apache.activemq:activemq-broker'
    implementation 'javax.jms:javax.jms-api'

 

定義消息

/**
 * JMS 實現creator 接口
 * 消息定義
 */
public class Msg implements MessageCreator {
    @Override
    public Message createMessage(Session session) throws JMSException {
        return session.createTextMessage("測試消息");
    }
}

 

消息監聽

@Component public class JmsListener {

    /**
     * 定義監聽業務處理
     * 定義地址名稱爲my-destination
     * @param msg
     */
    @org.springframework.jms.annotation.JmsListener(destination = "my-destination")
    public void receoveMessage(String msg){
        System.out.println("接收到"+msg);
    }
}

 

發送消息

    /**
     * 注入jsm模版bean
     */
    @Autowired
    JmsTemplate jmsTemplate;

    @Override
    public void run(String... args) throws Exception {
        // 啓動後執行發送消息到目的地
        jmsTemplate.send("my-destination",new Msg());
    }
相關文章
相關標籤/搜索