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();
}






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