文档章节

使用apache的activemq集合JMS处理异步消息

邓小峰
 邓小峰
发布于 2009/04/13 10:37
字数 417
阅读 4073
收藏 3

1:先去apache下载

http://activemq.apache.org/ ,大约有25M,要有点耐心

直接打开就可以使用;当然它也提供了安装为windows service的方法

2:配置activemq

在conf文件夹中配置

activemq.xml

主要是配置内存和端口

<policyEntry queue=">" memoryLimit="100mb"/>
<policyEntry topic=">" memoryLimit="100mb">
<amqPersistenceAdapter syncOnWrite="false" directory="${activemq.base}/data" maxFileLength="100 mb"/>
<memoryUsage limit="50 mb"/>

其中是否异步写是很重要一个参数

3:使用web方式访问管理

http://localhost:8161/admin/

很是方便

4:编程方式使用,系统安装后,有一个DEMO,你可以先测试一下,以后就照这个DEMO写就行了

 

5:在应用中的web.xml配置

<context-param>
<param-name>brokerURI</param-name>
<param-value>/WEB-INF/activemq.xml</param-value>
</context-param>
<listener>
<listener-class>org.activemq.web.SpringBrokerContextListener</listener-class>
</listener>

6:工具类

/**
 *
 */
package MQ;

/**
 * @author 小峰
 *
 */
import javax.jms.JMSException;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueSender;
import javax.jms.QueueSession;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.command.ActiveMQQueue;
import org.springframework.jms.core.support.JmsGatewaySupport;

public class QSender extends JmsGatewaySupport {

 public static void send(String message) throws JMSException {
  QueueConnectionFactory factory = new ActiveMQConnectionFactory(
    "tcp://127.0.0.1:61616");
  Queue queue = new ActiveMQQueue("queue.name.sample");
  QueueConnection conn = factory.createQueueConnection();
  for (int i = 0; i < 10000; i++) {
   QueueSession session = conn.createQueueSession(false,
     Session.AUTO_ACKNOWLEDGE);
   QueueSender sender = session.createSender(queue);
   TextMessage msg = session.createTextMessage(message);
   sender.send(msg);
  }
  conn.close();
 }
}

 

/**
 *
 */
package MQ;

/**
 * @author 小峰
 *
 */
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueReceiver;
import javax.jms.QueueSession;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.command.ActiveMQQueue;

// implements MessageListener in order to receiving asynchronous message
public class QReceiver implements MessageListener {
 // indicate whether stoping receiving
 private boolean stop = false;

 public static void main(String[] args) {
  new QReceiver().receive();
 }

 public void receive() {
  try {
   // the same as QSender
   QueueConnection conn = new ActiveMQConnectionFactory(
     "tcp://127.0.0.1:61616").createQueueConnection();
   Queue queue = new ActiveMQQueue("queue.name.sample");
   QueueSession session = conn.createQueueSession(false,
     Session.AUTO_ACKNOWLEDGE);
   QueueReceiver receiver = session.createReceiver(queue);
   // Sets the message consumer's MessageListener.
   receiver.setMessageListener(this);
   // ready to setup consumer,begin to receive message
   conn.start();
   while (!stop) {
    Thread.sleep(5);
   }
   System.out.println("exiting..");
   conn.close();
  } catch (Exception e) {
   e.printStackTrace();
   System.exit(1);
  }
 }

 // called while receiving message
 @Override
 public void onMessage(Message msg) {
  try {
   String text = ((TextMessage) msg).getText();
   System.out.println(text);
   if (text.equals("stop"))
    stop = true;
  } catch (JMSException e) {
   e.printStackTrace();
   stop = true;
  }
 }
}

 

© 著作权归作者所有

共有 人打赏支持
邓小峰
粉丝 26
博文 38
码字总数 17272
作品 0
广州
高级程序员
私信 提问
加载中

评论(1)

A
Ami
@Override public void onMessage(Message msg) { 报错
分布式消息通信ActiveMQ

消息中间件 消息中间件是指利用高效可靠的消息传递机制进行平台无关的数据交流,并且基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,可以在分布式架构下扩展进程之间...

架构师springboot
2018/12/23
0
0
第十七章:springboot 整合 activeMQ

首先介绍 JMS   JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通...

嘴角轻扬30
02/12
0
0
ActiveMQ 消息服务(一)

1、百度百科对ActiveMQ的解释: ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久的...

Andy市民
2015/11/06
0
0
JMS配置说明-----activeMQ-5.6

1 简介 activeMQ是一个完全支持JMS1.1 和J2EE规范的JMS Provider实现; 尽管规范出台已经是很久的事情了,但JMS在当今的J2EE应用中仍然扮演着特殊的地位; 特性列表 多种语言和协议编写客户端...

次渠龙哥
2018/06/26
0
0
一步一步Spring整合JMS

1.1 JMS简介 JMS的全称是Java Message Service,即Java消息服务。它主要用于在生产者和消费者之间进行消息传递,生产者负责产生消息,而消费者负责接收消息。把它应用到实际的业务需求中的话...

摆渡者
2015/08/31
0
0

没有更多内容

加载失败,请刷新页面

加载更多

dubbo自学入门

由于敏感文字检索过于死板,请跳转我的csdn博客查看 https://blog.csdn.net/loveshunyi/article/details/88813214

GodIsCj
26分钟前
1
0
前嗅ForeSpider脚本教程:模板脚本

链接脚本是频道的模板中的脚本。配置了模板脚本,模板的处理流程将被改变: 1.如果脚本未正确返回dom区域节点,则该模板的采集则完全由该脚本控制。 2.如果脚本返回了一个正确的dom区域节点,...

forespider
29分钟前
0
0
DM 源码阅读系列文章(二)整体架构介绍

作者:张学程 本文为 DM 源码阅读系列文章的第二篇,第一篇文章 简单介绍了 DM 源码阅读的目的和规划,以及 DM 的源码结构以及工具链。从本篇文章开始,我们会正式开始阅读 DM 的源码。 本篇...

TiDB
30分钟前
1
0
stm32h7 __attribute__((weak)) 使用说明

在用stm32h7 板子的时候,看了一个usmart历程,里面有个usart.c函数,声明了一个函数叫做HAL_UART_RxCpltCallback(UART_HandleTYpeDef *huart) 然后再stm32h7xx_hal_uart.c里看到了同样的一个...

青春无极限
32分钟前
1
0
用 C 语言编写 Windows 服务程序的五个步骤(转)

摘要   Windows 服务被设计用于需要在后台运行的应用程序以及实现没有用户交互的任务。为了学习这种控制台应用程序的基础知识,C(不是C++)是最佳选择。本文将建立并 实现一个简单的服务程...

_编程菜鸟_
54分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部