Java消息队列-ActiveMq代码记录
2017-12-27 23:08
447 查看
Java消息队列对比:
队列模式(queue):平均接收消息生产者产生的消息
主题模式(topic):全部接收生产者产生的所有消息,消费者必须要先预定主题,才能收到消息,没有预定的话是不能收到消息(也就是消费者无法消费产生在它启动接听之前的消息)
JMS编码接口之间的关系:
pom.xml:
AppConsumer:
AppProducer :
Spring jms :
- connectionFactory管理连接的连接工厂
- msTemplate用于发送和接受消息的模板
- messageListerner消息监听器
pom.xml:
common.xml:
consumer.xml:
producer.xml:
ConsumerMessageListener :
ProducerServiceImpl :
其他与前者代码类似
完整代码下载:csdn下载完整代码链接入口
图片来源:慕课网
队列模式(queue):平均接收消息生产者产生的消息
主题模式(topic):全部接收生产者产生的所有消息,消费者必须要先预定主题,才能收到消息,没有预定的话是不能收到消息(也就是消费者无法消费产生在它启动接听之前的消息)
JMS编码接口之间的关系:
pom.xml:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.imooc.jms</groupId> <artifactId>jms-test</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-core</artifactId> <version>5.7.0</version> </dependency> </dependencies> </project>
AppConsumer:
package com.imooc.jms.queue; import org.apache.activemq.ActiveMQConnectionFactory; import javax.jms.*; public class AppConsumer { private static final String url="failover:(tcp://127.0.0.1:61616,tcp://127.0.0.1:61617,tcp://127.0.0.1:61618)?randomize=true"; private static final String queueName="queue-test"; private static final String topicName="topic-test"; public static void main(String[] args) throws JMSException { ConnectionFactory connectionFactory=new ActiveMQConnectionFactory(url); Connection connection = connectionFactory.createConnection(); connection.start(); Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); // Destination destination=session.createTopic(topicName); Destination destination = session.createQueue(queueName); MessageConsumer consumer = session.createConsumer(destination); consumer.setMessageListener(new MessageListener() { public void onMessage(Message message) { TextMessage textMessage= (TextMessage) message; try { System.out.println("接收消息:"+textMessage.getText()); }catch (JMSException e){ e.printStackTrace(); } } }); } }
AppProducer :
package com.imooc.jms.queue; import org.apache.activemq.ActiveMQConnectionFactory; import javax.jms.*; public class AppProducer { // private static final String url="tcp://127.0.0.1:61616"; private static final String url="failover:(tcp://127.0.0.1:61617,tcp://127.0.0.1:61618)?randomize=true"; private static final String queueName="queue-test"; private static final String topicName="topic-test"; public static void main(String[] args) throws JMSException { ConnectionFactory connectionFactory=new ActiveMQConnectionFactory(url); Connection connection = connectionFactory.createConnection(); connection.start(); Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); // Destination destination=session.createTopic(topicName); Destination destination = session.createQueue(queueName); MessageProducer producer = session.createProducer(destination); for(int i=0;i<1000000000;i++){ TextMessage textMessage=session.createTextMessage("text:"+i); producer.send(textMessage); System.out.println("Success:"+textMessage.getText()); } connection.close(); } }
Spring jms :
- connectionFactory管理连接的连接工厂
- msTemplate用于发送和接受消息的模板
- messageListerner消息监听器
pom.xml:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.imooc.jms</groupId> <artifactId>jms-spring</artifactId> <version>1.0-SNAPSHOT</version> <properties> <spring.version>4.2.5.RELEASE</spring.version> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jms</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-core</artifactId> <version>5.7.0</version> <exclusions> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> </exclusion> </exclusions> </dependency> </dependencies> </project>
common.xml:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <context:annotation-config/> <bean id="targetConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"> <property name="brokerURL" value="tcp://127.0.0.1:61616"/> </bean> <bean id="connectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory"> <property name="targetConnectionFactory" ref="targetConnectionFactory"/> </bean> <bean id="queueDestination" class="org.apache.activemq.command.ActiveMQQueue"> <constructor-arg value="queue"/> </bean> <bean id="topicDestination" class="org.apache.activemq.command.ActiveMQTopic"> <constructor-arg value="topic"/> </bean> </beans>
consumer.xml:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <import resource="common.xml"/> <bean id="consumerMessageListener" class="com.imooc.jms.consumer.ConsumerMessageListener"/> <bean id="jmsContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer"> <property name="messageListener" ref="consumerMessageListener"/> <property name="destination" ref="topicDestination"/> <property name="connectionFactory" ref="connectionFactory"/> </bean> </beans>
producer.xml:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <import resource="common.xml"/> <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"> <property name="connectionFactory" ref="connectionFactory"/> </bean> <bean class="com.imooc.jms.producer.ProducerServiceImpl"/> </beans>
ConsumerMessageListener :
package com.imooc.jms.consumer; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.MessageListener; import javax.jms.TextMessage; public class ConsumerMessageListener implements MessageListener{ public void onMessage(Message message) { TextMessage textMessage= (TextMessage) message; try { System.out.println("ydc接收消息:"+textMessage.getText()); } catch (JMSException e) { e.printStackTrace(); } } }
ProducerServiceImpl :
package com.imooc.jms.producer; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jms.core.JmsTemplate; import org.springframework.jms.core.MessageCreator; import javax.annotation.Resource; import javax.jms.*; public class ProducerServiceImpl implements ProducerService { @Autowired JmsTemplate jmsTemplate; @Resource(name = "topicDestination") Destination destination; public void sendMessage(final String message) { jmsTemplate.send(destination, new MessageCreator() { public Message createMessage(Session session) throws JMSException { TextMessage textMessage=session.createTextMessage(message); return textMessage; } }); System.out.println("主题模式发送消息:"+message); } }
其他与前者代码类似
完整代码下载:csdn下载完整代码链接入口
图片来源:慕课网
相关文章推荐
- Activemq 消息发送、接收java代码实现队列模式
- Java消息队列--ActiveMq 实战
- Java消息队列-Spring整合ActiveMq
- Java消息队列-Spring整合ActiveMq
- activeMQ消息队列之JMS基础(附了一些代码帮助理解前期可跳过)
- Java消息队列-Spring整合ActiveMq
- java代码主动消费消息ActiveMQ消息{StringMessage}
- 简单实现Java消息队列之activemq
- Java activemq消息队列入门学习
- Java消息队列--ActiveMQ 实战
- Java消息队列--ActiveMq 实战
- ZeroMQ 消息队列 及 jzmq (java binding) 安装及代码测试
- Java消息队列--ActiveMq简单实例
- Java利用Redis实现消息队列的示例代码
- 通过Java操作ActiveMQ的代码记录
- Java消息队列-Spring整合ActiveMq
- Java消息队列--ActiveMq 实战
- java消息队列ActiveMQ的简单使用
- Java消息队列的简单实现代码
- JAVA 消息队列ActiveMQ