日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JMS-ActiveMQ学习-3 ActiveMQ与Spring集成

發(fā)布時(shí)間:2023/11/29 javascript 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JMS-ActiveMQ学习-3 ActiveMQ与Spring集成 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Spring下開發(fā)消息的發(fā)送和接收程序

點(diǎn)對(duì)點(diǎn)模式

一、創(chuàng)建生產(chǎn)者項(xiàng)目

1.創(chuàng)建maven項(xiàng)目

2.添加spring-jms、jms規(guī)范、activemq依賴

<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
<version>4.3.10.RELEASE</version>
</dependency>
<dependency>
<groupId>javax.jms</groupId>
<artifactId>javax.jms-apis</artifactId>
<version>2.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-client</artifactId>
<version>5.15.4</version>
</dependency>
</dependencies>

3.創(chuàng)建applicationContext.xml和applicationContext-jms.xml

applicationContext.xml中的配置內(nèi)容:

<import resource="applicationContext-jms.xml"/>

applicationContext-jms.xml中的配置內(nèi)容:

<!--創(chuàng)建一個(gè)連接工廠-->
<bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<!--連接地址-->
<property name="brokerURL" value="tcp://localhost:61616"/>
<property name="userName" value="admin"/>
<property name="password" value="admin"/>
</bean>
<!--jms的操作模板-->
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="connectionFactory"/>
<!--配置目的地-->
<property name="defaultDestinationName" value="myQueue"/>
</bean>

4.具體實(shí)現(xiàn)接口和類
1>創(chuàng)建dao層接口和類 public interface MessageDao {
public void sendMessage(String message);
} @Repository
public class MessageDaoImpl implements MessageDao {
@Autowired
private JmsTemplate jmsTemplate;
public void sendMessage(final String message) {
System.out.println("send message start");
jmsTemplate.send(new MessageCreator() {
public Message createMessage(Session session) throws JMSException {
return session.createTextMessage(message);
}
});
}
}
2>創(chuàng)建service層接口和類 public interface MessageService {
public void sendMessage(String message);
} @Service
public class MessageServiceImpl implements MessageService {
@Autowired
private MessageDao messageDao;
public void sendMessage(String message) {
messageDao.sendMessage(message);
}
}
3>創(chuàng)建Test類 public class Test {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
MessageService messageService = context.getBean("messageServiceImpl",MessageServiceImpl.class);
messageService.sendMessage("發(fā)送消息了");
}
}

4>applicationContext.xml文件中添加 <context:component-scan base-package="com.test.activemq"/>

二、創(chuàng)建消費(fèi)者項(xiàng)目

1.創(chuàng)建maven項(xiàng)目

2.添加spring-jms、jms規(guī)范、activemq依賴

<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
<version>4.3.10.RELEASE</version>
</dependency>
<dependency>
<groupId>javax.jms</groupId>
<artifactId>javax.jms-apis</artifactId>
<version>2.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-client</artifactId>
<version>5.15.4</version>
</dependency>
</dependencies>

3.創(chuàng)建applicationContext.xml和applicationContext-jms.xml

applicationContext.xml中的配置內(nèi)容:

<import resource="applicationContext-jms.xml"/>

applicationContext-jms.xml中的配置內(nèi)容:

<!--創(chuàng)建一個(gè)連接工廠-->
<bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<!--連接地址-->
<property name="brokerURL" value="tcp://localhost:61616"/>
<property name="userName" value="admin"/>
<property name="password" value="admin"/>
</bean>
<!--jms的操作模板-->
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="connectionFactory"/>
<!--配置目的地-->
<property name="defaultDestinationName" value="myQueue"/>
</bean>

4.具體實(shí)現(xiàn)接口和類
同步方式接收:
1>創(chuàng)建dao層接口和類 public interface MessageDao {
public String receiveMessage();
} @Repository
public class MessageDaoImpl implements MessageDao {
@Autowired
private JmsTemplate jmsTemplate;
public String receiveMessage(){
String msg = "";
Message message = jmsTemplate.receive();
if (message instanceof TextMessage){
try {
msg = ((TextMessage) message).getText();
} catch (JMSException e) {
e.printStackTrace();
}
}
return msg;
}
}
2>創(chuàng)建service層接口和類 public interface MessageService {
public String receiveMessage();
} @Service
public class MessageServiceImpl implements MessageService {
@Autowired
private MessageDao messageDao;
public String receiveMessage() {
return messageDao.receiveMessage();
}
}
3>創(chuàng)建Test類 public class Test {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
MessageService messageService = context.getBean("messageServiceImpl",MessageServiceImpl.class);
String message = messageService.receiveMessage();
System.out.println("接收到的消息是:"+message);
}
} 4>applicationContext.xml文件中添加 <context:component-scan base-package="com.test.jms"/>
三、消費(fèi)者點(diǎn)對(duì)點(diǎn)模式-異步接收 需要使用監(jiān)聽器
1>創(chuàng)建maven項(xiàng)目
2>添加依賴 <dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
<version>4.3.10.RELEASE</version>
</dependency>
<dependency>
<groupId>javax.jms</groupId>
<artifactId>javax.jms-apis</artifactId>
<version>2.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-client</artifactId>
<version>5.15.4</version>
</dependency>
</dependencies>
3>創(chuàng)建applicationContext.xml和applicationContext-jms.xml <!--創(chuàng)建一個(gè)連接工廠-->
<bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<!--連接地址-->
<property name="brokerURL" value="tcp://localhost:61616"/>
<property name="userName" value="admin"/>
<property name="password" value="admin"/>
</bean>
<!--配置一個(gè)spring的jms消息監(jiān)聽器-->
<bean class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="connectionFactory"/>
<property name="DestinationName" value="springQueue"/>
<property name="messageListener" ref="myMessageListener"/>

</bean>
<bean id="myMessageListener" class="com.test.jms.listener.MyMessageListener"/>
4>創(chuàng)建MyMessageListener類 /**
* 實(shí)現(xiàn)消息監(jiān)聽器
*/
public class MyMessageListener implements MessageListener {
/**
* 當(dāng)消息監(jiān)聽器監(jiān)聽到消息后,會(huì)自動(dòng)回調(diào)該onMessage方法
* 并且把監(jiān)聽到的消息回傳給該方法
* @param message
*/
public void onMessage(Message message) {
if (message instanceof TextMessage){
try {
System.out.println("接收到的消息是:"+((TextMessage) message).getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
}
}
5>創(chuàng)建Test測(cè)試類 public class Test {
public static void main(String[] args) {
new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
}
}
啟動(dòng)發(fā)現(xiàn)可以收到消息 console控制臺(tái)打印出來的消息是: 接收到的消息是:發(fā)送消息了

發(fā)布訂閱模式

同步和異步接收只是針對(duì)消費(fèi)者而言的

發(fā)布訂閱模式-同步接收

一、創(chuàng)建生產(chǎn)者

生產(chǎn)者和消費(fèi)者的都配置成發(fā)布訂閱模式

同步接收使用receive()接收

創(chuàng)建生產(chǎn)者需要在點(diǎn)對(duì)點(diǎn)模式的基礎(chǔ)上在applicationContext-jms.xml文件中添加:

<!--創(chuàng)建一個(gè)連接工廠-->
<bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<!--連接地址-->
<property name="brokerURL" value="tcp://localhost:61616"/>
<property name="userName" value="admin"/>
<property name="password" value="admin"/>
</bean>
<!--jms的操作模板-->
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="connectionFactory"/>
<!--配置目的地-->
<property name="defaultDestinationName" value="springTopic"/>
<!--pubSubDomain這個(gè)property對(duì)應(yīng)模式true代表發(fā)布訂閱,false代表點(diǎn)對(duì)點(diǎn),默認(rèn)是false,-->
<property name="pubSubDomain" value="true"/>
</bean>
同理,消費(fèi)者也是在點(diǎn)對(duì)點(diǎn)模式的基礎(chǔ)上做上述配置,后消費(fèi)者先啟動(dòng),再啟動(dòng)生產(chǎn)者

發(fā)布訂閱模式-異步接收

?在異步基礎(chǔ)上添加發(fā)布訂閱的配置(生產(chǎn)者和消費(fèi)者都需要配置)

<!--創(chuàng)建一個(gè)連接工廠-->
<bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<!--連接地址-->
<property name="brokerURL" value="tcp://localhost:61616"/>
<property name="userName" value="admin"/>
<property name="password" value="admin"/>
</bean>
<!--jms的操作模板-->
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="connectionFactory"/>
<!--配置目的地-->
<property name="defaultDestinationName" value="springTopic"/>
<property name="pubSubDomain" value="true"/>
</bean>

?

?






轉(zhuǎn)載于:https://www.cnblogs.com/healthinfo/p/9567362.html

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的JMS-ActiveMQ学习-3 ActiveMQ与Spring集成的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。