使用JAVA向微软消息队列(MSMQ)发送和接收消息
阅读原文时间:2021年04月20日阅读:1

直接进入主题

一、安装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技术感兴趣的请查阅相关资料

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章