activeMQ和spring進行整合


第一步:導入依賴的maven包




第二步:創建spring的配置文件


<!-- 發送配置 -->
<!-- 真正的目標工廠 -->
<bean id ="targetConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<constructor-arg name="brokerURL" value="tcp://39.106.33.97:61616"></constructor-arg>
</bean>
<!-- spring也提供一個工廠,我們把真正的工廠注入進去 -->
<bean id="connectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory">
<property name="targetConnectionFactory" ref="targetConnectionFactory"></property>
</bean>
<!-- spring提供了一個類似於jdbctemplate的東西 -->
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="connectionFactory"></property>
</bean>

<!-- 創建消息類型目標(value爲自定義的目標對象名字) -->
<bean id="queueid" class="org.apache.activemq.command.ActiveMQQueue">
<constructor-arg name="name" value="springp2p"></constructor-arg>
</bean>

<!-- 接收配置 -->

<!-- 監聽器,具體要做的事情只有自己知道,需要告訴Spring -->
<bean id="messageListener" class="com.qfedu.testActiceMQ.MyMessageListener"></bean>

<!-- 配置接受者監聽器的容器 -->
<bean class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="connectionFactory"></property>
<property name="destination" ref="queueid"></property>
<property name="messageListener" ref="messageListener"></property>
</bean>

第三步:創建監聽器接口

public class MyMessageListener implements MessageListener {


@Override
public void onMessage(Message message) {
try {
TextMessage msg= (TextMessage) message;
String text = msg.getText();
System.out.println("這不是小鹹菜,這是溜肥腸。。。");
} catch (JMSException e) {
System.out.println("整合出現錯誤");
e.printStackTrace();
}
}

第四步:測試發送消息

/**
* activeMQ整合spring發送消息
* @throws IOException 
* */
@Test
public void testSpring() throws IOException{
 ApplicationContext context = new ClassPathXmlApplicationContext("/spring/application.xml");
JmsTemplate jmsTemplate = context.getBean(JmsTemplate.class);
ActiveMQQueue queue = context.getBean(ActiveMQQueue.class);
jmsTemplate.send(queue,new MessageCreator() {

@Override
public Message createMessage(Session session) throws JMSException {
 
return session.createTextMessage("這是spring整合發出的消息。。。");
}
});

System.in.read();

}



第五步:測試接收消息

/**
 * activeMQ整合spring接收消息
 * */

@Test
public void testp2pconsumer() throws Exception{

//建立連接
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://39.106.33.97:61616");
Connection connection = connectionFactory.createConnection();
connection.start();
//創建session
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//創建接受者
Queue queue = session.createQueue("springp2p");
MessageConsumer consumer = session.createConsumer(queue);
//接收消息
consumer.setMessageListener(new MessageListener(){


@Override
public void onMessage(Message message) {

try {
TextMessage msg = (TextMessage) message;
String text= msg.getText();
System.out.println(text);
} catch (JMSException e) {
System.out.println("出現異常");
e.printStackTrace();
}
}
});
System.in.read();
}






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章