JMS 是基於消息代理的規範,而ActiveMQ,HornetQ 是一個JMS 消息代理的實現。java
AMQP 也是一個消息代理的規範,但它不只兼容JMS 還支持跨語言和跨平臺。AMQP 的主要實現有RabbitMQ。spring
隊列/主題:點對點/發佈與訂閱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()); }