- 集成配置
--消费者
<bean id="activeMQConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="tcp://192.168.74.200:61616"></property>
</bean>
<bean id="connectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory">
<property name="targetConnectionFactory" ref="activeMQConnectionFactory"></property>
</bean>
<bean id="queue" class="org.apache.activemq.command.ActiveMQQueue">
<constructor-arg value="spring-queue"></constructor-arg>
</bean>
<bean id="topic" class="org.apache.activemq.command.ActiveMQTopic">
<constructor-arg value="spring-topic"></constructor-arg>
</bean>
<bean id="myListener" class="com.study.spring.MyListener"></bean>
<bean class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="connectionFactory"></property>
<property name="destination" ref="topic"></property>
<property name="messageListener" ref="myListener"></property>
</bean>
--生产者
<bean id="activeMQConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value=""></property>
</bean>
<bean id="connectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory">
<property name="targetConnectionFactory" ref="activeMQConnectionFactory"></property>
</bean>
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="connectionFactory"></property>
</bean>
<bean id="queue" class="org.apache.activemq.command.ActiveMQQueue">
<constructor-arg value="spring-queue"></constructor-arg>
</bean>
<bean id="topic" class="org.apache.activemq.command.ActiveMQTopic">
<constructor-arg value="spring-topic"></constructor-arg>
</bean>
- 消费者接收消息 实现MessageListener监听方法 onMessage
- 关于消费者应答方式
成功则使用acknowledge应答 消费消息 - ActiveMQ支持事物消息 当开启事物时 要么同时成功提交 要么同时失败 失败使用session.rollback 提交时使用session.commit
- 关于不使用spring配置时 Active怎么使用
ConnectionFactory connectionFactory=new ActiveMQConnectionFactory("tcp://192.168.74.200:61616");
Connection connection = connectionFactory.createConnection();
connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Queue queue = session.createQueue("test-topic");
MessageProducer producer = session.createProducer(queue);
TextMessage message = session.createTextMessage("测试一对一模式");
producer.send(message);
producer.close();
session.close();
connection.close();
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.74.200:61616");
Connection connection = connectionFactory.createConnection();
connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Topic topic = session.createTopic("test-topic");
MessageConsumer consumer = session.createConsumer(topic);
consumer.setMessageListener(new MessageListener() {
public void onMessage(Message message) {
if(message instanceof TextMessage){
TextMessage textMessage = (TextMessage)message;
try {
System.out.println(textMessage.getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
}
});
System.in.read();
consumer.close();
session.close();
connection.close();