ActiveMQ的使用及整合spring的使用例項
ActiveMQ的主要使用步驟
主要講述的是使用的一些步驟,關於兩種訊息不提供解釋。
資訊生產者
/**
* 傳送點對點的訊息
* @throws Exception
*/
public void sendQueueTest() throws Exception{
//第一步:建立ActiveMQConnectionFactory物件,需要指定服務端ip及埠號。
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.1.123:61616");
//第二步:使用ConnectionFactory物件建立一個Connection物件。
Connection connection = connectionFactory.createConnection();
//第三步:開啟連線,呼叫Connection物件的start方法。
connection.start();
//第四步:使用Connection物件建立一個Session物件。
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//第五步:使用Session物件建立一個Destination物件(topic、queue),此處建立一個Queue物件。
Queue queue = session.createQueue("test-queue");
//第六步:使用Session物件建立一個Producer物件。
MessageProducer producer = session.createProducer(queue);
//第七步:建立一個Message物件,建立一個TextMessage物件。
TextMessage message = session.createTextMessage("測試訊息");
//第八步:使用Producer物件傳送訊息。
producer.send(message);
//第九步:關閉資源
producer.close();
session.close();
connection.close();
}
/**
* 釋出訊息
* @throws Exception
*/
public void sendTopicTest() throws Exception{
//第一步:建立ActiveMQConnectionFactory物件,需要指定服務端ip及埠號。
ConnectionFactory ConnectionFactory = new ActiveMQConnectionFactory("tcp://192.168.191.4:61616");
//第二步:使用ConnectionFactory物件建立一個Connection物件。
Connection connection = ConnectionFactory.createConnection();
//第三步:開啟連線,呼叫Connection物件的start方法。
connection.start();
//第四步:使用Connection物件建立一個Session物件。
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//第五步:使用Session物件建立一個Destination物件(topic、queue),此處建立一個Topic物件。
Topic topic = session.createTopic("Dai-Topic");
//第六步:使用Session物件建立一個Producer物件。
MessageProducer producer = session.createProducer(topic);
//第七步:建立一個Message物件,建立一個TextMessage物件。
TextMessage message = session.createTextMessage("test1_dai-Topic");
//第八步:使用Producer物件傳送訊息。
producer.send(message);
//第九步:關閉資源
producer.close();
session.close();
connection.close();
}
資訊的接受者
/**
* 接收點對點的訊息
* @throws Exception
*/
public void getQueueTest() throws Exception {
//消費者:接收訊息。
//第一步:建立一個ConnectionFactory物件。
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.1.123:61616");
//第二步:從ConnectionFactory物件中獲得一個Connection物件。
Connection connection = connectionFactory.createConnection();
//第三步:開啟連線。呼叫Connection物件的start方法。
connection.start();
//第四步:使用Connection物件建立一個Session物件。
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//第五步:使用Session物件建立一個Destination物件。和傳送端保持一致queue,並且佇列的名稱一致。
Queue queue = session.createQueue("test-queue");
//第六步:使用Session物件建立一個Consumer物件。
MessageConsumer consumer = session.createConsumer(queue);
//第七步:接收訊息。
consumer.setMessageListener(new MessageListener() {
@Override
public void onMessage(Message message) {
TextMessage textMessage = (TextMessage) message;
//第八步:列印訊息。
try {
System.out.println(textMessage.getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
});
System.in.read();
//第九步:關閉資源
consumer.close();
session.close();
connection.close();
}
/**
* 訂閱訊息
* @throws Exception
*/
public void getTopicTest() throws Exception {
//消費者:接收訊息。
//第一步:建立一個ConnectionFactory物件。
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.191.4:61616");
//第二步:從ConnectionFactory物件中獲得一個Connection物件。
Connection connection = connectionFactory.createConnection();
//第三步:開啟連線。呼叫Connection物件的start方法。
connection.start();
//第四步:使用Connection物件建立一個Session物件。
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//第五步:使用Session物件建立一個Destination物件。和傳送端保持一致Topic。
Topic topic = session.createTopic("Dai-Topic");
//第六步:使用Session物件建立一個Consumer物件。
MessageConsumer consumer = session.createConsumer(topic);
//第七步:接收訊息。
consumer.setMessageListener(new MessageListener() {
@Override
public void onMessage(Message message) {
TextMessage textMessage = (TextMessage)message;
try {
System.out.println("接收到訊息是:"+textMessage.getText().toString());
} catch (JMSException e) {
e.printStackTrace();
}
}
});
System.in.read();
//第九步:關閉資源
consumer.close();
session.close();
connection.close();
}
整合spring後的使用(配置檔案略)
資訊生產者
//JMS提供的ActiveMq的工具類
@Autowired
private JmsTemplate jmsTemplate;
//這個是釋出/訂閱模式
@Resource
private Destination topicDestination;
//將新增商品的訊息新增到佇列
jmsTemplate.send(topicDestination, new MessageCreator() {
@Override
public Message createMessage(Session session) throws JMSException {
return session.createTextMessage(itemID + "");
}
});
資訊的接受者
/**
* 訊息佇列的監聽器
* @author adrain
*
*/
public class SearchMessageListener implements MessageListener {
@Autowired
private SearchItemService searchItemService;
@Override
public void onMessage(Message message) {
try {
if(message instanceof TextMessage){
TextMessage textMessage = (TextMessage) message;
String itemId = textMessage.getText();
Thread.sleep(1000);
searchItemService.addDocument(Long.parseLong(itemId));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
相關文章
- ActiveMQ 入門及例項MQ
- Redis整合Spring結合使用快取例項RedisSpring快取
- ActiveMq整合SpringMQSpring
- Spring Boot 整合ActiveMQ的過程Spring BootMQ
- Spring與ActiveMQ整合SpringMQ
- spring整合quartz的叢集配置例項Springquartz
- JSTL的標籤及使用,包含例項JS
- AWK簡介及使用例項
- flex的使用例項Flex
- Dozer的使用: 整合SpringSpring
- spring+zookeeper+dubbo使用例項Spring
- Spring+ActiveMQ整合測試SpringMQ
- ActiveMQ第二彈:使用Spring JMS與ActiveMQ通訊MQSpring
- Spring Boot 整合 FreeMarker 例項Spring Boot
- Axis2+spring整合例項Spring
- cut命令的使用例項
- activemq的兩種基本通訊方式的使用及總結MQ
- FreaMarker入門教程,環境整合到使用例項
- guava之ImmutableMap使用例項及好處Guava
- Spring Cache + Caffeine的整合與使用Spring
- spring+redis的整合,使用spring-data-redis來整合SpringRedis
- 【Spring Boot架構】整合Mybatis-Plus的例項詳解Spring Boot架構MyBatis
- pinctrl使用例項
- Mybatis 的使用(整合Spring、SpringBoot)MyBatisSpring Boot
- 使用SRVCTL啟動例項與使用sqlplus啟動例項的區別SQL
- Tee命令的幾個使用例項
- .Net平臺下ActiveMQ入門例項MQ
- 在 Kubernetes 上使用Spring Boot+ActiveMQSpring BootMQ
- ActiveMQ第三彈:在Spring中使用內建的Message BrokerMQSpring
- ActiveMQ使用簡介MQ
- 使用 vue 例項更好的監聽事件Vue事件
- Linux 中的 JQ 命令使用例項Linux
- Linux中ip命令的使用例項Linux
- vue例項中watch屬性的使用Vue
- Linux 中 ss 命令的使用例項Linux
- Linux中的basename命令使用例項Linux
- jQuery的ajax和json使用例項jQueryJSON
- tunna工具使用例項