使用JAVA向微软消息队列(MSMQ)发送和接收消息

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014022405/article/details/54021132

直接进入主题

一、安装MSMQ,可按照下面博客安装

安装MSMQ

二、在MSMQ中创建队列



③修改队列的权限(测试的时候全部勾上吧)


三、下载msmqJava所需的jar包和dll文件

官网下载:下载所需文件

CSDN下载:下载所需文件

四、解压所下载的文件

里面有两个文件夹:/bin、/doc

/bin里面是所需的库

/doc里面是文档

五、创建工程

①将/bin目录下的MsmqJava.dll放入项目根目录下,不是src下面

②导入MsmqJava.jar包

③创建带main函数的测试类

项目工程如下图:


六、编写代码及测试

import ionic.Msmq.Message;
import ionic.Msmq.MessageQueueException;
import ionic.Msmq.Queue;

/** 
* MSMQDemo
* @author motianlong 
* @version 创建时间:2017年1月4日 下午3:15:50  
*/
public class SimpleMSMQ {
	/**
	 * 加载dll库
	 */
	static{
		System.loadLibrary("MsmqJava");
	}
	public static void main(String[] args) {
		try {
			//192.32.12.76为本机的IP地址(经测试不能使用127.0.0.1,不然会报错)
			//private$\\myqueue是队列名字
			String fullname="direct=tcp:192.32.12.76\\private$\\myqueue";
		     Queue queue= new Queue(fullname);
		     //标题
		     String label="testmessage";
		     //内容
		     String body= "Hello, World!";
		     //这个属性我还没搞清楚是什么,有大神知道的请告知
		     String correlationId = "123"; 
		     //创建消息
		     Message msg= new Message(body, label, correlationId);
		     //发送
		     queue.send(msg);
		 }
		 catch (MessageQueueException ex1) {
		     System.out.println("Put failure: " + ex1.toString());
		     ex1.printStackTrace();
		 } catch (Exception e) {
			e.printStackTrace();
		}
	}
}
运行,然后去MSMQ信息查看是否收到消息,收到消息如下图:



这样发送消息就成功了!

接收消息如下代码:

import ionic.Msmq.Message;
import ionic.Msmq.MessageQueueException;
import ionic.Msmq.Queue;

/** 
* MSMQDemo
* @author motianlong 
* @version 创建时间:2017年1月4日 下午3:15:50  
*/
public class SimpleMSMQ {
	/**
	 * 加载dll库
	 */
	static{
		System.loadLibrary("MsmqJava");
	}
	public static void main(String[] args) {
		try {
			//192.32.12.76为本机的IP地址(经测试不能使用127.0.0.1,不然会报错)
			//private$\\myqueue是队列名字
			String fullname="direct=tcp:192.32.12.76\\private$\\myqueue";
		     Queue queue= new Queue(fullname);
		     Message message=queue.receive();
		     System.out.println(message.getBodyAsString());
		 }
		 catch (MessageQueueException ex1) {
		     System.out.println("Put failure: " + ex1.toString());
		     ex1.printStackTrace();
		 } catch (Exception e) {
			e.printStackTrace();
		}
	}
}

这种方式是用过JNI技术实现的,但是我们不需要了解实现的过程,msmqJava.jar和dll已经帮我们做了,对JNI技术感兴趣的请查阅相关资料

猜你喜欢

转载自blog.csdn.net/u014022405/article/details/54021132
今日推荐