http://www.hxstrive.com/article/512.htm
该篇文章将向读者展示,怎样使用java去操作MSMQ(Windows自带的一个消息队列)。分为发送和接收消息,在操作MSMQ时,我们需要下载MsmqJava文件,该文件包含一个jar包和一个dll文件。下面将逐步教您怎样编写一个MSMQ程序。
第一步:开启MSMQ
Windows默认是没有开启MSMQ功能的,需要我们自己手动去开启,开启方法如下:
注意:点击“启动或关闭Windows功能”,然后在弹出的选择框中找到MSMQ即可(这就不详细说了,相信您能办到)。
第二步:创建一个测试队列
右击“我的电脑”点击管理。在管理中找到“服务和应用程序”项,点击“消息队列”。然后右击“专用队列”,选择“新建”/“专用队列”。
第三步:设置新建专用队列权限
在“专用队列”中,找到刚才创建的新队列,右击选择“属性”。在属性框中,选择“安全”页,设置“Everyone”权限为完全控制。
第四步:下载MsmqJava
打开浏览器,输入“http://msmqjava.codeplex.com/”,然后下载MsmqJava包,然后解压。
Java利用MsmqJava操作MSMQ消息队列
该项目使用Eclipse进行开发,jdk1.6,同时引入了日志框架(Slf4j、log4j)、MsmqJava.dll、MsmqJava.jar。
基础代码(BaseMessage.java)
package com.huangx;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* 基础类
*
* @author Administrator
* @date 2017-06-23 22:01:27
*/
public abstract class BaseMessage {
private static final Logger LOG = LoggerFactory.getLogger(BaseMessage.class);
/**
* 队列名称。其中:192.32.12.76为本机的IP地址(经测试不能使用127.0.0.1,不然会报错)
* private$\\javaTest是队列名字
*/
protected static final String QUEUE_NAME = "direct=tcp:192.168.1.115\\private$\\javaTest";
static {
try {
LOG.debug("开始加载DLL文件...");
System.loadLibrary("MsmqJava");
LOG.debug("加载DLL文件成功");
} catch (Exception e) {
LOG.error("加载DLL失败,原因:" + e.getMessage(), e);
}
}
/**
* 执行业务逻辑,由具体业务实现
*/
public abstract void execute();
}
log4j.properties
log4j.rootLogger=debug,Console
log4j.logger.org.apache.zookeeper=warn,Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d %-5p [%c] - %m%n
Java发送代码(SendMessage.java)
package com.huangx;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ionic.Msmq.Message;
import ionic.Msmq.Queue;
/**
* 发送消息到MSMQ队列
*
* @author Administrator
* @date 2017-06-23 21:38:11
*/
public class SendMessage extends BaseMessage {
private static final Logger LOG = LoggerFactory.getLogger(SendMessage.class);
@Override
public void execute() {
try {
LOG.debug("开始发送消息...");
// 创建队列
Queue queue = new Queue(QUEUE_NAME);
// 创建消息
String label = "testMessage";
String body = "Hello, World!";
byte[] correlationId = { 0, 2, 4, 6, 8, 9 };
Message msg = new Message(body, label, correlationId);
// 发送消息
LOG.debug("发送消息[label={}, body={}]", msg.getLabel(), msg.getBodyAsString());
queue.send(msg);
LOG.debug("发送消息成功^_^");
} catch (Exception e) {
LOG.error("发送消息失败!原因:" + e.getMessage(), e);
}
}
public static void main(String[] args) {
new SendMessage().execute();
}
}
编写Java接收代码(ReceiveMessage.java)
package com.huangx;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ionic.Msmq.Message;
import ionic.Msmq.Queue;
/**
* 接收消息
*
* @author Administrator
* @date 2017-06-23 22:19:49
*/
public class ReceiveMessage extends BaseMessage {
private static final Logger LOG = LoggerFactory.getLogger(ReceiveMessage.class);
@Override
public void execute() {
try {
// 创建队列
Queue queue = new Queue(QUEUE_NAME);
// 接收消息
Message message = queue.receive();
LOG.debug("接收到消息[label={}, body={}]",
message.getLabel(), message.getBodyAsString());
} catch (Exception e) {
LOG.debug(e.getMessage(), e);
}
}
public static void main(String[] args) {
new ReceiveMessage().execute();
}
}
相关推荐
包含MsmqJava DLL的VS2010源码(可编译32位及64位) Java调用源码等,测试可用
msqc#使用消息队列来完成通信,如何创建消息队列进行了详细说明.
C#MSMQ 消息队列工具,MSMQ(消息队列) 前段时间研究WCF接触到了MSMQ,弄了一个小工具 分享一下
msmq消息队列相关
c#多线程操作msmq消息队列。将消息队列的出队入队抽象基类,判断msmq是否包含消息
msmq消息队列相关
VS2005环境下用C#编写的演示消息队列发送与接收的程序,含全部源码及一个包装的类,调用简单.放到这里的目的是给初学者一个学习的例子.
MSMQ消息队列
微软消息队列java发送读取jar和dll文件,msmqJava.jar和msmqJava.dll
消息队列MSMQ创建,同步异步接受消息,适合初学者,代码详细~
MSMQ 微软信息队列
MSMQ(Microsoft Message Queue)微软消息队列是操作系统中消息通信的基础,也是用于创建分布式、松散连接的消息通信应用程序的开发工具。它与电子邮件很相似,它们都包含多个属性,用于保存消息,消息类型中都指出...
自己整理写的JAVA操作微软消息队列(MSMQ),发送和接收消息,使用MyEclipse、jdk1.7,内含示例、jar、dll,我博文里有教程(已更新远程教程,请正确使用dll和jar包,有同学说有异常,经调试已发现是错误引用,按照...
windows自带的消息队列,MSMQ类为发送消息,MSMQ_Receive类库为接收消息,此工程简单,为初学者提供教程和程序,1积分求打赏,谢谢!
此文档是C#开发的消息队列系统,适用于消息队列入门与新手。 在Windows 7 上安装消息队列的步骤 打开“控制面板”。 单击“程序”,然后在“程序和功能”下, 单击“打开或关闭 Windows 功能”。 -或者-单击“经典...
大神的资料--此文件有详细的范例,涉及到了MSMQ的调用、权限等关键技术和方法。附赠的文档非常详细的讲解了范例的说明,详细讲解了MSMQ的相关知识等技术应用。通过本资料就可以完全掌握MSMQ消息队列的技术
asp.net 基于消息队列的开发,实现异步消息传递处理
C++操作消息队列,实现消息队列的创建,读、写操作
可用于调试MSMQ、RabbitMQ、ActiveMQ三种消息队列 其中MSMQ支持Active、Binary、XML格式(要勾选事务) RabbitMQ支持逐条接发、批量接发、RPC回调模式、新建队列、建立持久化队列、连接测试等功能。