初次使用ActiveMQ,借助百度(近来常规方式google无法访问)搜索了JMS1.1规范阅读了一下,于是动手开始尝试实现一个消息生产和消费的示例。
言简意赅,先来一个HelloWorld再说!
拜访http://activemq.apache.org/ 了解activemq的相关信息,并下载
了解activemq的快速开始的手册,然后启动activemq服务,看到如下图输出,表示启动服务成功
3. 默认情况下打开浏览器访问:http://localhost:8161/admin 即可进入activemq的管理界面
下面是通过ActiveMQ实现消息生产和消息消费的具体实现:
如果使用Maven的话可以直接添加依赖:
org.apache.activemq activemq-all 5.9.0
如果不适用Maven只需要添加activemq-all.jar(该jar在下载的activemq的二进制分发包中已经包含)
创建一个消息生产进程:
private static String providerAddress = "tcp://localhost:61616"; private static String messageDest = "messageDest"; @Test public void messageProducer() throws JMSException, InterruptedException { // 获取连接工厂 ConnectionFactory connectFactory = new ActiveMQConnectionFactory( providerAddress); // 获取连接 Connection connection = connectFactory.createConnection(); connection.start(); // 创建会话 Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); // 创建消息目的地 Destination dest = session.createQueue(messageDest); // 创建消息提供者 MessageProducer producer = session.createProducer(dest); // 通过会话创建消息 TextMessage message=session.createTextMessage("Hello World ActiveMQ"); // 发送消息 producer.send(message); //收尾处理 producer.close(); session.close(); connection.close(); }通过上面的代码注释,可以看出一个消息生产的过程。
创建一个消息消费进程
@Test public void messageConsumer() throws JMSException { //创建连接工厂 ConnectionFactory connectionFactory=new ActiveMQConnectionFactory(providerAddress); //获取连接 Connection connection =connectionFactory.createConnection(); connection.start(); //创建会话 Session session=connection.createSession(false, Session.AUTO_ACKNOWLEDGE); //创建消息目的地 Destination dest=session.createQueue(messageDest); //创建消息消费者 MessageConsumer consumer=session.createConsumer(dest); //接受消息 TextMessage message=(TextMessage) consumer.receive(); System.out.println(message.getText()); //收尾处理 consumer.close(); session.close(); connection.close(); }
消息消费也可以使用消息监听的方式来接受消息,具体使用如下代码:
consumer.setMessageListener(new MessageListener() { @Override public void onMessage(Message message) { try { System.out.println(((TextMessage)message).getText()); } catch (JMSException e) { e.printStackTrace(); } } });
启动程序,看效果
上面已经启动了ActiveMQ服务,然后运行测试程序,这样就可以看到控制台打印:Hello World ActiveMQ ;表示消息已经生产成功,并且已经消费。