image
殼叔搞笑時間
趕報(bào)表,晚餐沒吃就喝了杯水。文員妹紙下班走時問我:要不要幫你叫外賣?
我回她:剛喝了杯水,不餓。
她伸出一只手的大拇指和小拇指在空中晃了幾晃,我納悶問:讓我打你電話?
她略尷尬道:說你666……
我。。還有這種操作~
正文
了解消息隊(duì)列
http://blog.bhusk.com/articles/2018/03/05/1520250548267
程序員要的干貨
開始搬運(yùn)干貨
Java Pom文件
現(xiàn)在Maven項(xiàng)目可以大大減少你的開發(fā)時間。
<properties>
<spring.version>4.2.5.RELEASE</spring.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-core</artifactId>
<version>5.7.0</version>
<exclusions>
<exclusion>
<artifactId>spring-context</artifactId>
<groupId>org.springframework</groupId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
接下來 配置文件
common.xml
<context:annotation-config/>
<!-- activemq 提供的connectionFactory-->
<bean id="targetConnectionFactory"class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="tcp://127.0.0.1:61616"/>
</bean>
<!-- spring jms 提供的connectionFactory連接池-->
<bean id="connectionFactory"class="org.springframework.jms.connection.SingleConnectionFactory">
<property name="targetConnectionFactory" ref="targetConnectionFactory"/>
</bean>
<!--隊(duì)列目的地 點(diǎn)對點(diǎn) -->
<bean id="queueDestination" class="org.apache.activemq.command.ActiveMQQueue">
<constructor-arg value="queue"/>
</bean>
<!--主題模式-->
<bean id="topicDestination" class="org.apache.activemq.command.ActiveMQTopic">
<constructor-arg value="topic"/>
</bean>
product.xml 生產(chǎn)的配置文件
<import resource="common.xml"/>
<!--jms 用來發(fā)送消息 -->
<bean id="jmsTemplale" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="connectionFactory"></property>
</bean>
<bean class="com.bhsuk.producer.ProducerServiceImpl"/>
生產(chǎn)的配置文件,配置完了,開始寫product的代碼吧
ProducerServiceImpl.java
public class ProducerServiceImpl implements ProducerService{
@Autowired
private JmsTemplate jmsTemplate;
@Resource(name = "topicDestination")
private Destination destination;
public void sendMessage(final String message) {
// 使用jmstemplate發(fā)送消息
jmsTemplate.send(destination, new MessageCreator() {
public Message createMessage(Session session) throws JMSException {
// 創(chuàng)建消息體
TextMessage textmessage = session.createTextMessage(message);
System.out.println("消息已經(jīng)發(fā)送"+message);
return textmessage;
}
});
}
}@Autowired
private JmsTemplate jmsTemplate;
@Resource(name = "topicDestination")
private Destination destination;
public void sendMessage(final String message) {
// 使用jmstemplate發(fā)送消息
jmsTemplate.send(destination, new MessageCreator() {
public Message createMessage(Session session) throws JMSException {
// 創(chuàng)建消息體
TextMessage textmessage = session.createTextMessage(message);
System.out.println("消息已經(jīng)發(fā)送"+message);
return textmessage;
}
});
}
本文只粘貼核心代碼,如果需要詳細(xì)代碼或測試方法,可以去GitHub上觀看更詳細(xì)的代碼。
消費(fèi)配置文件 consumer.xml
<!-- 公共配置消息 -->
<import resource="common.xml"/>
<!--cousumer 監(jiān)聽類-->
<bean id="consumerListener" class="com.yunus.jms.consumer.ConsumerListener"/>
<!--message 監(jiān)聽容器 -->
<bean id="jmsContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="connectionFactory"/>
<property name="destination" ref="topicDestination"/>
<property name="messageListener" ref="consumerListener"/>
</bean>
既然有生產(chǎn)和消費(fèi) 生產(chǎn)寫完了,那就得寫消費(fèi)了。
ConsumerListener.java
public class ConsumerListener implements MessageListener{
public void onMessage(Message message) {
TextMessage textMessage = (TextMessage) message;
try {
System.out.println("接受消息為"+textMessage.getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
}
直達(dá)GitHub 項(xiàng)目鏈接 (懶人專用)
https://github.com/ykz200/Spring-ActiveMQ
shu.io/upload_images/3315001-5b3828bba5ea52a0.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)