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();
}
}
相关推荐
Java通过MsmqJava读写MSMQ是一种在Java应用程序中利用消息队列(MSMQ)技术的方法。MSMQ,全称Microsoft Message Queuing,是由微软提供的一个可靠的消息传递服务,用于在不同网络环境、应用程序之间或者在不可靠的...
本文将深入探讨Java如何与MSMQ进行交互,以及创建消息队列的详细步骤。 首先,我们需要理解消息队列的基本概念。消息队列是一种中间件,它允许应用程序之间通过发送和接收消息进行通信,而无需直接调用对方。消息...
自己整理写的JAVA操作微软消息队列(MSMQ),发送和接收消息,使用MyEclipse、jdk1.7,内含示例、jar、dll,我博文里有教程(已更新远程教程,请正确使用dll和jar包,有同学说有异常,经调试已发现是错误引用,按照...
总结起来,`msmqJava.jar`和`msmqJava.dll`为Java开发者提供了一种在Java应用程序中使用微软消息队列(MSMQ)的途径。通过这两个文件,开发者可以实现跨平台的、可靠的、异步的消息通信,这对于构建分布式系统和...
通过MsmqJava,Java开发者可以轻松地利用MSMQ的功能,例如创建、读取、删除消息队列,以及发送和接收消息。 MsmqJava64.dll是专为64位环境设计的动态链接库,它实现了与MSMQ通信所需的底层接口。在Windows操作系统...
在Java中使用MSMQ通常需要依赖于第三方库,如`jmsmq`或`msmq-jms`,这些库提供了API,使得Java应用能够创建、读取、删除MSMQ队列,并发送和接收消息。64位版本可能意味着这个库或代码是为了在64位操作系统上运行而...
1. MSMQ队列路径必须正确,遵循MSMQ格式。 2. 在64位操作系统上,确保使用`MsmqJava64.jar`,否则可能会遇到兼容性问题。 3. 异常处理是必不可少的,因为与MSMQ的交互可能会抛出异常。 4. MSMQ需要在目标机器上安装...
JNI允许Java代码调用C/C++编写的本地函数,因此msmqJava.dll可能是用C或C++编写,用于执行实际的MSMQ操作,如创建队列、发送和接收消息等。 标签"msmq,java"表明这是关于使用Java与MSMQ进行交互的技术主题。 在...
【描述】"MsmqJava-1.2.1.2-bin 消息队列 Java Mq jar dll" 指出这个库包含了可执行的二进制文件(bin),以及与 MSMQ 相关的 Java 类库(jar)和可能的动态链接库(dll)文件。这些组件使得 Java 开发人员能够在...
通过这个库,Java开发者可以利用MSMQ的功能,如创建消息队列、发送和接收消息,而无需深入理解底层的Windows API。 "MsmqJava.jar"则是一个Java档案文件,它包含了Java类库,使得Java开发者可以在应用程序中直接...
而`MsmqJava64.jar`则包含Java接口,供Java开发者在代码中调用,实现对MSMQ的操作,如创建、读取、删除消息队列,发送和接收消息等。 4. **Java与本地库的交互** Java通过Java Native Interface (JNI) 来与本地库...
例如,`msmq-jms`库就提供了这样的功能,它允许Java应用使用标准的JMS API来操作MSMQ队列。 3. **配置JNDI(Java Naming and Directory Interface)**:JNDI通常用于查找JMS资源,如ConnectionFactory和Queue。在与...
总结来说,MsmqJava.dll和MsmqJava.jar为Java开发者提供了与MSMQ交互的便捷工具,使得Java应用能够充分利用MSMQ的特性,实现高效、可靠的分布式消息通信。通过深入理解和合理运用这两个组件,开发者可以构建出更加...
而MsmqJava.jar则包含Java接口,使得开发者可以在Java代码中轻松地操作MSMQ,如创建、读取和删除消息。 使用MsmqJava.jar的关键步骤如下: 1. **加载DLL**:在Java程序中,首先需要通过`System.loadLibrary(...
"MsmqJava.dll64位"指的是一个专为64位操作系统设计的动态链接库(DLL)文件,它与Java语言有关,主要用于处理Microsoft Message Queuing(MSMQ)技术。MSMQ是一种面向消息的中间件,允许应用程序在不可靠或延迟的...
首先,"MsmqJava32.dll"是专为32位操作系统设计的动态链接库,它提供了一组API接口,使得Java开发者能够在32位的环境下与MSMQ进行交互。这些接口通常包括创建消息队列、发送和接收消息、管理队列等操作。通过调用...
这个库允许Java开发者利用MSMQ的功能,例如消息队列的创建、发送和接收,从而实现可靠的消息传递。MSMQ是一种消息中间件技术,它在分布式系统中提供了异步通信的能力,即使目标系统暂时不可用,也能确保消息的安全...
MsmqJava.dll 特别是为Java开发者设计的,使得Java应用程序能够利用MSMQ的功能,如创建、读取和删除消息队列,实现跨网络、跨时间的消息传递。 **32位和64位的区别**: 在处理MsmqJava.dll时,需要区分32位和64位...
JAVA向微软消息队列(MSMQ)发送和接收消息所需DLL