`
raymond.chen
  • 浏览: 1437298 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

发送/接收消息的例子

阅读更多

1、消息发送程序

public class UMProducer {
	private MessageProducer producer = null;
	private Connection connection = null;
	private Session session = null;
	
	public void start(){
		try{
			//自动重连
			ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(  
	                ActiveMQConnection.DEFAULT_USER,  
	                ActiveMQConnection.DEFAULT_PASSWORD,  
	                "failover://(tcp://127.0.0.1:61616?tcpNoDelay=true)"); 

			connection = connectionFactory.createConnection();  
			((ActiveMQConnection)connection).setUseAsyncSend(true);  //异步发送消息
			connection.start(); 
			
			session = connection.createSession(Boolean.TRUE, Session.CLIENT_ACKNOWLEDGE); //使用事务时,将忽略ACK
			Destination destination = session.createQueue("queue_msg");
			
			producer = session.createProducer(destination);
			producer.setDeliveryMode(DeliveryMode.PERSISTENT); //消息持久化
			producer.setTimeToLive(1000 * 60 * 60 * 24); //消息过期时间,单位为 毫秒
			
			int i = 0;
			while(true){
				++i;
				
				MessageEntity entity = new MessageEntity();
				entity.setMessage("activeMQ mseeage " + i);
				
				ObjectMessage message = session.createObjectMessage(entity);
		        producer.send(message); 
		        
				//在事务性会话中,只有commit之后,消息才会真正到达目的地
		        //commit动作比较耗时,采取批量commit的策略以提高性能
		        if(i % 1000 == 0){
		        	session.commit(); 
		        }
		        
				System.out.println("waiting...   " + i);
			}
			
		}catch(Exception ex){
			ex.printStackTrace();
		}
	}
	
	public void stop(){
		try{
			if(session != null) {
				session.close();  
			}
			
			if(connection != null) {
				connection.close();
			}
			
			if(producer != null){
				producer.close();
			}
		}catch(Exception ex){
			ex.printStackTrace();
		}
	}
	
	public static void main(String[] args) {
		UMProducer producer = new UMProducer();
		producer.start();
	}
}

  

2、消息接收程序

public class UMConsumer {
	private String name;
	private MessageConsumer consumer = null;
	private Connection connection = null;
	private Session session = null;
	
	public UMConsumer(String name){
		this.name = name;
	}
	
	public void start(){
		try{
			//自动重连
			ConnectionFactory connectionFactory =  
	            new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER, ActiveMQConnection.DEFAULT_PASSWORD,  
	                "failover://(tcp://127.0.0.1:61616?tcpNoDelay=true)");  
	          
	        connection = connectionFactory.createConnection();  
	        connection.start();  
	        
	        session = connection.createSession(Boolean.FALSE, Session.CLIENT_ACKNOWLEDGE);  
	        
	        Destination destination = session.createQueue("queue_msg"); 
	        consumer = session.createConsumer(destination);  
	        
	        //异步接收消息
	        consumer.setMessageListener(new MessageListener() {
				@Override
				public void onMessage(Message message) {
					try{
						if(message instanceof ObjectMessage){
							ObjectMessage omsg = (ObjectMessage)message;
							MessageEntity entity = (MessageEntity)omsg.getObject();
							System.out.println(name + " 收到消息:" + entity.getMessage()); 
							
							//确认消息
							message.acknowledge();
						}
					}catch(Exception ex){
						ex.printStackTrace();
					}
				}
			});
	        
		}catch(Exception ex){
			ex.printStackTrace();
		}
	}
	
	public void stop(){
		try{
			if(session != null) {
				session.close();  
			}
			
			if(connection != null) {
				connection.close();
			}
			
			if(consumer != null){
				consumer.close();
			}
		}catch(Exception ex){
			ex.printStackTrace();
		}
	}
	
	public static void main(String[] args) {
		UMConsumer consumer = new UMConsumer("UMConsumer Name");
		consumer.start();
	}
	
}

 

  

分享到:
评论

相关推荐

    MFC发送消息与接收消息的例子

    在Windows编程中,MFC(Microsoft Foundation ...这个例子将帮助你更好地掌握MFC中如何使用`PostMessage`来实现消息的发送和接收。通过实践和学习,你将能够熟练运用这一技术,提升你的Windows应用程序开发能力。

    spring mq集成 web工程发送和接收消息例子

    在我们的例子中,我们将使用Spring与ActiveMQ的集成,以便在Web应用中发送和接收消息。 集成步骤如下: 1. **配置ActiveMQ服务器**:首先,你需要在本地或远程服务器上安装并运行ActiveMQ。下载并解压ActiveMQ,...

    activemq 通过ajax发送接收消息简单例子

    在这个简单的例子中,我们将探讨如何利用Ajax与ActiveMQ交互,发送和接收消息。首先,你需要在服务器端设置一个ActiveMQ实例,可以通过下载并安装ActiveMQ来完成。安装完成后,启动ActiveMQ服务,这通常会开启一个...

    TCP发送和接收消息例子

    linux和windows两种环境都可以

    Spring发送接收JMS消息

    在Java世界中,Java Message Service (JMS) 是一个标准接口,用于在分布式环境中发送和接收消息。Spring框架提供了一种简单而强大的方式来集成JMS,使得开发者可以轻松地在应用中实现异步通信和解耦。本篇文章将深入...

    VC 演示EXE程序通信的发送和接收消息机制.rar

    VC 演示EXE程序通信基于消息机制,要同时编译运行两个子程序,在Sender端发送消息,在Receiver端接收sender端发送的消息,截图是sender端的运行效果。其中发送消息有三种方法,请看以下代码:  //发送消息命令一  ...

    springboot实现websocket发送和接收消息

    在这个例子中,客户端订阅了`/topic/messages`主题,当服务器发送消息到这个主题时,客户端会收到消息。同时,客户端也能够通过`stompClient.send()`方法向服务器发送消息。 总结来说,Spring Boot通过集成...

    发送和接收snmp例子代码

    Windows上实现snmp发送与接收的例子程序,发送的例子是发送的trap,接收例子是接收后提取出数据包中的oid等数据

    Java Socket发送和接收的例子

    在运行此程序时,先启动服务器,然后启动客户端,客户端将向服务器发送一条消息,并接收服务器的响应。这个简单的例子展示了Java Socket基本的发送和接收机制,但实际的网络应用可能会更复杂,包括多线程处理多个...

    SpringBoot+ActiveMq+MQTT实现消息的发送和接收

    在本文中,我们将深入探讨如何使用SpringBoot、ActiveMQ和MQTT来实现消息的发送与接收。这是一个典型的分布式系统中的消息通信场景,其中SpringBoot作为应用程序框架,ActiveMQ作为消息中间件,而MQTT(Message ...

    VB使用Socket控件发送接收文件的例子

    在VB(Visual Basic)编程中,Socket控件是...这个例子就是一个基础的演示,帮助开发者理解如何利用Socket控件在VB中实现文件发送和接收功能。在实际应用中,可能还需要考虑错误处理、多线程、断点续传等更复杂的场景。

    delphi使用spcomm串口通信发送消息例子

    下面是一个简单的使用SPComm控件发送消息的例子: ```delphi uses SpComm; var SP: TSpComm; Message: String; begin // 创建SPComm对象 SP := TSpComm.Create(Self); // 设置串口参数 SP....

    E4A配合易语言服务器发送推送消息例子源码

    标题中的“E4A配合易语言服务器发送推送消息例子源码”揭示了这是一个关于使用E4A(Easy4Android)和易语言开发的服务器端配合实现消息推送的示例项目。这个项目的主要目的是教给开发者如何在Android应用程序中集成...

    使用RTP协议发送和接收H264的例子(支持解码、播放)

    MFC实现的窗口程序,集成了发送和接收RTP包的功能,接收到的视频用FFmpeg解码并显示出来。该例子代码对应我博客上的一篇文章:https://blog.csdn.net/zhoubotong2012/article/details/86510032

    UDP的发送接收例子 及SNMP trap

    在SNMP中,Trap是一种被动的通知机制,当网络设备上发生特定事件(如接口状态改变或内存不足)时,设备会主动向网络管理站发送Trap消息。`TrapReceiver_SNMP4J.java`可能是一个基于SNMP4J库的Trap接收器。SNMP4J是...

    MFC TCP/UDP最经典例子

    在MFC中使用TCP,你需要创建一个基于CAsyncSocket类的对象,然后调用成员函数来监听、连接、发送和接收数据。例如,你可以使用OnAccept()处理新的连接请求,OnReceive()处理接收到的数据,以及OnConnect()处理连接...

    C#TCP接收和发送消息(源码)

    下面展示一个简单的发送消息的例子: ```csharp byte[] data = Encoding.UTF8.GetBytes("Hello, Client!"); stream.Write(data, 0, data.Length); ``` 接收消息的过程则涉及到异步编程,因为数据可能分多次到达。...

    php 发送与接收流文件例子

    下面我们将详细探讨`sendStreamFile.php`和`receiveStreamFile.php`这两个文件如何实现流文件的发送和接收。 首先,我们来看`sendStreamFile.php`。这个脚本的主要任务是将一个文件以流的形式发送出去。通常,这...

    使用jrtplib发送和接收的例子--PlayStream V1.2

    基于jrtplib实现了RTP发送和接收功能,支持发送H264、PS、TS等文件流,接收端读取发送端发来的数据后,取Payload数据,通过FFmpeg分离、解码出视频,将RGB格式的视频在窗口中显示。 了解更多内容请参阅我博客上的...

Global site tag (gtag.js) - Google Analytics