`
sunxboy
  • 浏览: 2868973 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

ActiveMQ JMS的测试

阅读更多

有二种方式可以测试。

1. 透过testng, 在测试类中完成的jms服务器的启动与关闭。

a.初始化jms服务器

@BeforeClass(groups = "jms")
	    public void setupActiveMQ() throws Exception {
	        BrokerService broker = new BrokerService();
	        broker.setPersistent(false);
	        broker.setUseJmx(false);
	        broker.start();
	        URI uri = broker.getVmConnectorURI();
	        ConnectionFactory factory = new ActiveMQConnectionFactory(uri);
	        //String uri = "vm://localhost?broker.persistent=false";
	        //ConnectionFactory factory = new ActiveMQConnectionFactory(uri);
	        Connection connection = factory.createConnection();
	        connection.start();
	        session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
	        destination = session.createQueue("TestQueue@router1");
	    }

 b. 运行测试类

@Test(groups = "jms")
	    public void sendMessage() throws JMSException {
	        TextMessage msg = session.createTextMessage();
	        msg.setText("hello");
	        session.createProducer(destination).send(msg);
	    }

c. 验证接收到的消息

 @Test(groups = "jms", dependsOnMethods = "sendMessage", timeOut = 1000)
	    public void receiveMessage() throws JMSException {
	        MessageConsumer consumer = session.createConsumer(destination);
	        TextMessage msg = (TextMessage) consumer.receive();
	        assert "hello".equals(msg.getText());
	    }

 

2. 透过maven-activemq-plugin插件,运行jms服务器,然后分别实现发送与接收

a. maven 配置

<plugin>
				<groupId>org.apache.activemq.tooling</groupId>
				<artifactId>maven-activemq-plugin</artifactId>
				<version>5.2.0</version>
				<configuration>
					<configUri>
						xbean:file:src/main/resources/net/sunbeta/jms/activemq.xml
					</configUri>
					<fork>false</fork>
					<systemProperties>
						<property>
							<name>javax.net.ssl.keyStorePassword</name>
							<value>password</value>
						</property>
						<property>
							<name>org.apache.activemq.default.directory.prefix</name>
							<value>./target/</value>
						</property>
					</systemProperties>
				</configuration>
				<dependencies>
					<dependency>
						<groupId>org.springframework</groupId>
						<artifactId>spring</artifactId>
						<version>2.5.6</version>
					</dependency>
					<dependency>
						<groupId>org.mortbay.jetty</groupId>
						<artifactId>jetty-xbean</artifactId>
						<version>6.1.11</version>
					</dependency>
					<dependency>
						<groupId>org.apache.camel</groupId>
						<artifactId>camel-activemq</artifactId>
						<version>1.1.0</version>
					</dependency>
				</dependencies>
			</plugin>

 其中 activemq.xml 的配置为:

<?xml version="1.0"?>
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:amq="http://activemq.apache.org/schema/core"
  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-2.0.xsd
  http://activemq.apache.org/schema/core
  http://activemq.apache.org/schema/core/activemq-core.xsd">
  
  <broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost" dataDirectory="./data">
    <!-- The transport connectors ActiveMQ will listen to -->
    <transportConnectors>
      <transportConnector name="openwire" uri="tcp://localhost:61616"/>
    </transportConnectors>
  </broker>
</beans>

 b.消息发送

public class JmsProducer {

	private ConnectionFactory factory;
	private Connection connection;
	private Session session;
	private MessageProducer producer;

	public JmsProducer(ConnectionFactory factory, String queueName)
			throws JMSException {
		this.factory = factory;
		connection = factory.createConnection();
		connection.start();
		session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
		Destination destination = session.createQueue(queueName);
		producer = session.createProducer(destination);
	}

	public void run() throws JMSException {
		for (int i = 0; i < 100; i++) {
			System.out.println("Creating Message " + i);
			Message message = session.createTextMessage("Hello World!");
			producer.send(message);
		}
	}

	public void close() throws JMSException {
		if (connection != null) {
			connection.close();
		}
	}
}

 创建一个broker去调用它

public class JmsBroker {

	public static String brokerURL = "tcp://localhost:61616";

	// mvn clean compile exec:java
	// -Dexec.mainClass=net.sunbeta.test.jms.JmsBroker
	public static void main(String[] args) throws Exception {
		// setup the connection to ActiveMQ
		ConnectionFactory factory = new ActiveMQConnectionFactory(brokerURL);

		JmsProducer producer = new JmsProducer(factory, "test");
		producer.run();
		producer.close();
	}
}

 c. 消息接收

public class JmsConsumer implements MessageListener{
	public static String brokerURL = "tcp://localhost:61616";

	private ConnectionFactory factory;
	private Connection connection;
	private Session session;
	private MessageConsumer consumer;

	public static void main(String[] args) {
		JmsConsumer app = new JmsConsumer();
		app.run();
	}

	public void run() {
		try {
			ConnectionFactory factory = new ActiveMQConnectionFactory(brokerURL);
			connection = factory.createConnection();
			connection.start();
			session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
			Destination destination = session.createQueue("test");
			consumer = session.createConsumer(destination);
			consumer.setMessageListener(this);
		} catch (Exception e) {
			System.out.println("Caught:" + e);
			e.printStackTrace();
		}
	}

	public void onMessage(Message message) {
		try {
			if (message instanceof TextMessage) {
				TextMessage txtMessage = (TextMessage) message;
				System.out.println("Message received: " + txtMessage.getText());
			} else {
				System.out.println("Invalid message received.");
			}
		} catch (JMSException e) {
			System.out.println("Caught:" + e);
			e.printStackTrace();
		}
	}

 

OK !

分享到:
评论

相关推荐

    Jmeter测试ActiveMQ性能报告

    本报告详细阐述了使用JMeter对ActiveMQ进行性能测试的过程和结果,旨在评估ActiveMQ在JMS(Java消息服务)环境下的性能表现。JMeter作为一个强大的负载和性能测试工具,被广泛用于测试各种应用程序,包括消息中间件...

    tomcat activemq jms所需包

    4. **JMS相关库**:在描述中提到的“jms所需包”可能包含了ActiveMQ的客户端库和其他JMS相关的jar文件,如`activemq-client.jar`、`geronimo-jms_1.1_spec.jar`等。这些库文件是Tomcat应用程序使用JMS与ActiveMQ通信...

    sprin jms activemq 测试

    在“sprin jms activemq 测试”这个主题中,我们将深入探讨Spring如何与JMS和ActiveMQ集成,以及如何进行相关的测试。 首先,Spring框架通过`spring-jms`模块提供了对JMS的支持。它提供了一组抽象,使得开发者能够...

    基于zookeeper+levelDB的ActiveMQ集群测试代码

    ActiveMQ是Apache软件基金会开发的一个开源消息中间件,支持多种消息协议,如AMQP、JMS等。在这个场景中,我们将深入探讨如何利用ZooKeeper和LevelDB来构建一个高可用的ActiveMQ集群。 ZooKeeper是Apache Hadoop...

    jms-test.zip_jms activemq_jms test

    描述中提到,“jms测试程序,将tomcat和activeMq整合在一起做的一个发送接受的发布订阅的例子”,这表明项目是基于Tomcat服务器,并且通过ActiveMQ实现了一个发布/订阅模式的消息传递。Tomcat是一个流行的Java应用...

    test_jms.zip_activemq_activemq案例_jms_jms test

    **JMS测试** 在"jms_test"部分,可能包括验证消息发送、接收的正确性,以及性能测试等。这可能涉及以下方面: 1. **单元测试**:检查生产者是否正确发送消息,消费者是否能正确接收。 2. **集成测试**:确保...

    activeMQ-JMS实例

    在本文中,我们将深入探讨如何使用Spring MVC框架与ActiveMQ结合实现JMS(Java Message Service)实例。首先,让我们理解ActiveMQ和JMS的基本概念。 ActiveMQ是Apache软件基金会开发的一款开源消息代理,它实现了...

    activemq rcp测试例子 不包含依赖库

    ActiveMQ是Apache软件基金会的一个开源项目,它是一个强大的消息中间件,支持多种协议,包括JMS(Java消息服务)和AMQP(先进消息队列协议)等。 在这个测试例子中,开发者可能使用ActiveMQ的RPC功能来实现客户端和...

    测试activeMQ的java程序

    ActiveMQ,作为Java消息服务(JMS)的一个实现,是Apache软件基金会开发的一款开源消息中间件。它在分布式系统中扮演着重要的角色,允许不同组件或服务之间进行异步通信,提高了系统的可扩展性和解耦性。在Java编程...

    spring 整合 activemq 生产者和消费者 案例源码

    Spring整合ActiveMQ是Java消息服务(JMS)在Spring框架中的应用,用于实现生产者与消费者的解耦。在这个案例中,我们将深入探讨如何配置和使用这两个组件,以便于理解它们的工作原理。 首先,ActiveMQ是Apache软件...

    ActiveMQ连接和使用测试工程

    **ActiveMQ连接与使用测试工程详解** ActiveMQ是Apache软件基金会的一个开源项目,它是一个功能丰富的消息代理,支持多种消息协议,如OpenWire、STOMP、AMQP和MQTT等。在Java开发环境中,ActiveMQ作为中间件广泛...

    Flex整合ActiveMQ(JMS)

    8. **测试与调试**:部署Flex应用并测试其与ActiveMQ的通信。确保消息可以正确地发送和接收,同时注意可能出现的网络问题和权限设置。 在提供的文件列表中,"Flex3与ActiveMQ整合.docx"可能包含详细的步骤指南,...

    ActiveMQ与Zookeeper集群测试代码

    ActiveMQ是Apache软件基金会开发的一款开源的消息中间件,它遵循Java Message Service(JMS)规范,支持多种协议,如AMQP、STOMP等,能够用于处理大量并发消息传递,提供高可靠性和高性能。而Zookeeper则是一个...

    ActiveMQ测试Demo

    **ActiveMQ测试Demo** 在IT行业中,消息中间件起着至关重要的作用,它允许不同的应用程序之间进行异步通信,提高系统的可扩展性和解耦性。Apache ActiveMQ是业界广泛使用的一款开源消息代理,遵循开放消息中间件...

    activeMQ 例子 真实环境下测试过

    ActiveMQ是Apache软件基金会开发的一款开源消息中间件,它遵循开放消息传递协议(Open Message Broker Protocol,即AMQP)和Java消息服务(Java Message Service,JMS)规范,用于在分布式系统中提供可靠的消息传递...

    activeMQ收发工具.rar

    本压缩包“activeMQ收发工具.rar”包含了用于测试和操作ActiveMQ的实用工具,主要是一个jar包文件,方便用户在安装了Java Development Kit (JDK) 的环境中运行。 ActiveMQ收发工具的核心功能是通过Java应用程序发送...

    Spring 和 activemq 搭建JMS开发系统示例

    **Spring与ActiveMQ搭建JMS开发系统示例详解** 在Java世界中,消息队列(JMS,Java Message Service)是一种标准,它定义了API来创建、发送、接收和读取消息,允许应用程序进行异步通信。Spring框架是Java开发中的...

    activemq测试样例

    Apache ActiveMQ是开源的、基于Java消息服务(JMS)的应用服务器,它是企业级消息中间件,用于在分布式系统中传递消息。这个“activemq测试样例”压缩包提供了有关如何使用ActiveMQ创建队列、创建消费者以及处理消息...

    activeMQ static broker测试

    ActiveMQ 是一个开源的消息中间件,它遵循开放消息模型(JMS)标准,提供可靠的消息传递服务,使得应用程序可以通过消息传递进行异步通信。在"activeMQ static broker测试"中,我们关注的是ActiveMQ的静态Broker配置...

Global site tag (gtag.js) - Google Analytics