精华内容
下载资源
问答
  • java mq 配置方式

    千次阅读 2018-11-17 11:47:10
    最近用到mq,需要配置一些参数,开始时xml配置方式的,用的jar包是spring-rabbit 1.4.5.RELEASE,配置文件如下: <bean id="pushHandler" class="具体实现类路径/com.test"/> &...

    最近用到mq,需要配置一些参数,开始时xml配置方式的,用的jar包是spring-rabbit 1.4.5.RELEASE,配置文件如下:

    	<bean id="pushHandler" class="具体实现类路径/com.test"/>
    	<!-- 声明Queue并设定Queue的名称 -->
    	<bean id="devicePropertyQueue" class="org.springframework.amqp.core.Queue">
    		<constructor-arg name="name" value="devicePropertyQueue" />
    		<constructor-arg name="durable" value="true" />
    		<constructor-arg name="exclusive" value="false" />
    		<constructor-arg name="autoDelete" value="false" />
    	</bean>
    	
    	<!-- 声明Exchange的类型为direct并设定Exchange的名称 -->
    	<bean id="deviceProperty.direct" class="org.springframework.amqp.core.DirectExchange">
    		<constructor-arg value="deviceProperty.direct"></constructor-arg>
    	</bean>
    	
    	<!-- Topic类型交换机通过模式匹配分配消息的routing-key属性。将路由键和某个模式进行匹配,此时队列需要绑定到一个模式上。 它将routing-key和binding-key的字符串切分成单词。这些单词之间用点隔开。它同样也会识别两个通配符:符号“#”和符号“*”。 
    		#匹配0个或多个单词,*匹配不多不少一个单词。 例如,binding key:*.stock.#匹配routing key: usd.stock和eur.stock.db,但是不匹配stock.nana。 
    		例如,“audit.#”能够匹配到“audit.irs.corporate”,但是“audit.*”只会匹配到“audit.irs”。 如果没有队列绑定在交换机上,则发送到该交换机上的消息会丢失。 
    		一个交换机可以绑定多个队列,一个队列可以被多个交换机绑定。 持久性:如果启用,交换机将会在server重启前都有效。 自动删除:如果启用,那么交换机将会在其绑定的队列都被删掉之后删除自身。 
    		惰性:如果没有声明交换机,那么在执行到使用的时候会导致异常,并不会主动声明。 -->
    	<!-- 通过Binding来判定Queue、Exchange、routingKey -->
    	<!-- 其中构建Binding的参数1是Queue,参数2是Exchange,参数3是routingKey -->
    	<bean id="devicePropertyQueueBind" class="org.springframework.amqp.core.Binding">
    		<constructor-arg name="destination" value="devicePropertyQueue" />
    		<constructor-arg name="destinationType" value="QUEUE" />
    		<constructor-arg name="exchange" value="deviceProperty.direct" />
    		<constructor-arg name="routingKey" value="push_device_property" />
    		<constructor-arg name="arguments">
    			<null />
    		</constructor-arg>
    	</bean>
    
    	<!-- 用于消息的监听的代理类MessageListenerAdapter -->
    	<bean id="myDevicePropertyListenerAdapter"
    		class="org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter">
    		<constructor-arg ref="pushHandler" />
    		<property name="defaultListenerMethod" value="handleMessage"></property>
    		<property name="messageConverter" ref="messageConverter"></property>
    	</bean>
    	<!-- 用于消息的监听的容器类SimpleMessageListenerContainer,对于queueName的值一定要与定义的Queue的值相同 -->
    	<bean id="devicePropertyListenerContainer"
    		class="org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer">
    		<property name="queueNames">
    			<array>
    				<value>devicePropertyQueue</value>
    			</array>
    		</property>
    		<property name="connectionFactory" ref="connectionFactory"></property>
    		<property name="messageListener" ref="myDevicePropertyListenerAdapter"></property>
    		<property name="concurrentConsumers" value="50"></property>
    		<property name="prefetchCount" value="200"></property>
    	</bean>

    感觉方式太low了,xml文件就是繁琐,后面改了一下,用spring-rabbit 2.0.5.RELEASE以上的版本,配置方式

    配置文件如下:

    mq.queue = push_device_property1
    mq.exchange = deviceProperty.direct1
    mq.routingkey = push_device_property1
    mq.durable = true
    mq.exclusive = false
    mq.autoDelete = false

    java里面配置如下:

        @RabbitListener(bindings = {
                @QueueBinding(value = @Queue(value = "${mq.queue}", durable = "${mq.durable}", autoDelete = "${mq.autoDelete}", exclusive = "${mq.exclusive}"),
                        exchange = @Exchange(name = "${mq.exchange}"), key = "${mq.routingkey}")})
        @RabbitHandler

     

    展开全文
  • JAVA实现MQ发送接收消息详解 MQ配置文档 MQ配置
  • Java调用MQ队列

    2014-08-11 10:22:00
    IBM MQ 6.0中设置两个队列,(远程队列、通道之类都不设置)。 队列管理器是XIR_QM_1502 队列名称是ESBREQ ...MQ配置可以参考这个,有配图http://wenku.baidu.com/view/06d108d0360cba1aa811daa...

    IBM MQ 6.0中设置两个队列,(远程队列、通道之类都不设置)。

    队列管理器是XIR_QM_1502

    队列名称是ESBREQ

    IP地址是10.23.117.134(远程的一台电脑,跟我的电脑不在一个局域网内)

    端口1414

    CCSID 1208


    MQ配置可以参考这个,有配图http://wenku.baidu.com/view/06d108d0360cba1aa811daa3.html

    程序如下,发送线程两个,接收线程一个。接收完毕后就结束。


    1. /* 
    2.  * 创建日期 2012-7-10 
    3.  * 
    4.  * TODO 要更改此生成的文件的模板,请转至 
    5.  * 窗口 - 首选项 - Java - 代码样式 - 代码模板 
    6.  */  
    7. package yerasel;  
    8.   
    9. /** 
    10.  * @author Fenglb E-mail:56553655@163.com 
    11.  * @version 创建时间:2009-4-30 下午04:13:38 类说明 
    12.  */  
    13.   
    14. import java.io.IOException;  
    15. import com.ibm.mq.MQC;  
    16. import com.ibm.mq.MQEnvironment;  
    17. import com.ibm.mq.MQException;  
    18. import com.ibm.mq.MQGetMessageOptions;  
    19. import com.ibm.mq.MQMessage;  
    20. import com.ibm.mq.MQPutMessageOptions;  
    21. import com.ibm.mq.MQQueue;  
    22. import com.ibm.mq.MQQueueManager;  
    23.   
    24. interface SomeConstants {  
    25.     String qManager = "XIR_QM_1502";//"XIR_QM"; //QueueManager name  
    26.     String qName = "ESBREQ";// Queue Name  
    27.     String strIP = "10.23.117.134";//"10.24.28.139";//"10.24.28.102";  
    28.     int iPort = 1502;//1414;  
    29.     String strChl = "SYSTEM.DEF.SVRCONN";// Server-Connection Channel  
    30.     int iCCSID = 1208;  
    31. }  
    32.   
    33. class Sender implements Runnable, SomeConstants {  
    34.     public void run() {  
    35.         sendMessage();  
    36.     }  
    37.   
    38.     public void sendMessage() {  
    39.   
    40.         String name = Thread.currentThread().getName();  
    41.         System.out.println("进入线程" + name);  
    42.   
    43.         MQQueueManager qMgr = null;  
    44.         // configure connection parameters  
    45.   
    46.         MQEnvironment.hostname = strIP;  
    47.         // Server name or IP  
    48.         MQEnvironment.port = iPort;  
    49.         MQEnvironment.channel = strChl;  
    50.         MQEnvironment.CCSID = iCCSID;  
    51.   
    52.         // java程序连接mq的方式有两种,一是客户机方式,一是绑定方式,  
    53.         // 默认是客户机方式,当mq部署在本地的时候,就需要用绑定方式  
    54.         // 本机IP是10.24.28.139连接10.23.117.134的时候不需要下句  
    55.         //MQEnvironment.properties.put(MQC.TRANSPORT_PROPERTY,  
    56.         //MQC.TRANSPORT_MQSERIES_BINDINGS);  
    57.   
    58.         // Create a connection to the QueueManager  
    59.         System.out.println(name + " Connecting to queue manager: " + qManager);  
    60.         try {  
    61.             qMgr = new MQQueueManager(qManager);  
    62.             // Set up the options on the queue we wish to open  
    63.             int openOptions = MQC.MQMT_REQUEST | MQC.MQPMO_NEW_MSG_ID  
    64.                     | MQC.MQOO_OUTPUT | MQC.MQOO_FAIL_IF_QUIESCING  
    65.                     | MQC.MQOO_INPUT_AS_Q_DEF;  
    66.             // Now specify the queue that we wish to open and the open options  
    67.             System.out.println(name + " Accessing queue: " + qName);  
    68.             MQQueue queue = qMgr.accessQueue(qName, openOptions);  
    69.             // Define a simple WebSphere MQ Message ...  
    70.   
    71.             // Specify the default put message options  
    72.             MQPutMessageOptions pmo = new MQPutMessageOptions();  
    73.   
    74.             // Put the message to the queue  
    75.             System.out.println(name + " Sending a message...");  
    76.   
    77.             MQMessage msg = new MQMessage();  
    78.             msg.messageId = "MSGID".getBytes();  
    79.             msg.messageType = MQC.MQMT_REQUEST;  
    80.             msg.replyToQueueName = "ESBREQ";  
    81.   
    82.             // 在此测试一下 mq 的传输次列  
    83.             for (int j = 1; j < 5; j++) {  
    84.                 msg.messageSequenceNumber = j;  
    85.                 // write some text in UTF8 format  
    86.                 try {  
    87.                     String str = "Salemetsizbe Yerasel";  
    88.                     str = str + " " + j;  
    89.                     msg.writeUTF(str);  
    90.                     queue.put(msg, pmo);  
    91.                     msg.clearMessage();  
    92.                     System.out.println(name + " putting the message... " + j);  
    93.                 } catch (MQException mqe) {  
    94.                     mqe.printStackTrace();  
    95.                     break;  
    96.                 } catch (IOException e1) {  
    97.                     e1.printStackTrace();  
    98.                 }  
    99.             }  
    100.             qMgr.commit();  
    101.             System.out.println(name + " Done!");  
    102.             System.out.println("==========");  
    103.             System.out.println("");  
    104.         } catch (MQException e) {  
    105.             e.printStackTrace();  
    106.         }  
    107.     }  
    108. }  
    109.   
    110. class Receiver implements Runnable, SomeConstants {  
    111.   
    112.     public void run() {  
    113.         recvMessage();  
    114.     }  
    115.   
    116.     public void recvMessage() {  
    117.   
    118.         String name = Thread.currentThread().getName();  
    119.           
    120.         try {  
    121.             Thread.sleep(1000);  
    122.             MQQueueManager qMgr = null;  
    123.   
    124.               
    125.             System.out.println("进入线程" + name);  
    126.   
    127.             System.out.println(name + " Connecting to queue manager: "  
    128.                     + qManager);  
    129.             qMgr = new MQQueueManager(qManager);  
    130.             // 设置将要连接的队列属性  
    131.             // Note. The MQC interface defines all the constants used by the  
    132.             // WebSphere MQ Java programming interface  
    133.             // (except for completion code constants and error code constants).  
    134.             // MQOO_INPUT_AS_Q_DEF:Open the queue to get messages using the  
    135.             // queue-defined default.  
    136.             // MQOO_OUTPUT:Open the queue to put messages.  
    137.             int openOptions = MQC.MQOO_INPUT_AS_Q_DEF | MQC.MQOO_OUTPUT  
    138.                     | MQC.MQOO_INQUIRE;  
    139.   
    140.             // Now get the message back again. First define a WebSphere MQ  
    141.             // message to receive the data  
    142.             MQMessage rcvMessage = new MQMessage();  
    143.   
    144.             // Specify default get message options  
    145.             MQGetMessageOptions gmo = new MQGetMessageOptions();  
    146.             gmo.options = gmo.options + MQC.MQGMO_SYNCPOINT;// Get messages  
    147.                                                             // under sync point  
    148.                                                             // control(在同步点控制下获取消息)  
    149.             gmo.options = gmo.options + MQC.MQGMO_WAIT; // Wait if no messages  
    150.                                                         // on the  
    151.                                                         // Queue(如果在队列上没有消息则等待)  
    152.             gmo.options = gmo.options + MQC.MQGMO_FAIL_IF_QUIESCING;// Fail if  
    153.                                                                     // Qeue  
    154.                                                                     // Manager  
    155.                                                                     // Quiescing(如果队列管理器停顿则失败)  
    156.             gmo.waitInterval = 1000; // Sets the time limit for the  
    157.                                         // wait.(设置等待的毫秒时间限制)  
    158.   
    159.             System.out.println(name + " Accessing queue: " + qName);  
    160.             MQQueue queue = qMgr.accessQueue(qName, openOptions);  
    161.             int depth = 0;  
    162.   
    163.             // Get the message off the queue.  
    164.             System.out.println("... " + name + " getting the message back again");  
    165.             for (;;) {  
    166.                 try {  
    167.                     queue.get(rcvMessage, gmo);  
    168.                     System.out.println(" ID: "  
    169.                             + (new String(rcvMessage.messageId)).trim()  
    170.                             + " Num: " + rcvMessage.messageSequenceNumber  
    171.                             + " Type: " + rcvMessage.messageType + " Flag: "  
    172.                             + rcvMessage.messageFlags);  
    173.                     // And display the message text...  
    174.                     String msgText = rcvMessage.readUTF();  
    175.                     System.out.println("The message is: " + msgText);  
    176.                     rcvMessage.clearMessage();  
    177.   
    178.                     // Break if no MSG left in queue  
    179.                     depth = queue.getCurrentDepth();  
    180.                     if (depth == 0)  
    181.                         break;  
    182.   
    183.                 } catch (MQException mqe) {  
    184.                     mqe.printStackTrace();  
    185.                     break;  
    186.                     // null;  
    187.                 } catch (IOException e) {  
    188.                     e.printStackTrace();  
    189.                 }  
    190.             }  
    191.             // Close the queue  
    192.             System.out.println(name + " Closing the queue");  
    193.             queue.close();  
    194.             // Disconnect from the QueueManager  
    195.             System.out.println(name + " Disconnecting from the Queue Manager");  
    196.             qMgr.disconnect();  
    197.             System.out.println(name + " Done!");  
    198.             System.out.println("==========");  
    199.             System.out.println("");  
    200.         } catch (MQException ex) {  
    201.             System.out  
    202.                     .println("A WebSphere MQ Error occured : Completion Code "  
    203.                             + ex.completionCode + " Reason Code "  
    204.                             + ex.reasonCode + ex.getMessage());  
    205.         } catch (InterruptedException e1) {  
    206.             e1.printStackTrace();  
    207.         }  
    208.     }  
    209. }  
    210.   
    211. public class MQTest {  
    212.   
    213.     public static void main(String args[]) {  
    214.   
    215.         /* 
    216.          * MQTest first = new MQTest(); first.sendMessage(); 
    217.          * first.recvMessage(); 
    218.          */  
    219.         Sender sender = new Sender();  
    220.         Thread senderThread = new Thread(sender);  
    221.         senderThread.start();  
    222.         senderThread.setName("Sender");  
    223.           
    224.         Thread senderThread2 = new Thread(sender);  
    225.         senderThread2.start();  
    226.         senderThread2.setName("Sender2");  
    227.           
    228.         Receiver recv = new Receiver();  
    229.         Thread recvThread = new Thread(recv);  
    230.         recvThread.start();  
    231.         recvThread.setName("Receiver");  
    232.   
    233.         // Receiver recv = new Receiver();  
    234.         // new Thread(recv).start();  
    235.   
    236.     }  
    237.   
    238. }  


    运行结果如下:

    进入线程Sender2
    进入线程Sender
    Sender2 Connecting to queue manager: XIR_QM_1502
    Sender Connecting to queue manager: XIR_QM_1502
    Sender2 Accessing queue: ESBREQ
    Sender2 Sending a message...
    Sender Accessing queue: ESBREQ
    Sender Sending a message...
    Sender2 putting the message... 1
    Sender putting the message... 1
    Sender2 putting the message... 2
    Sender putting the message... 2
    Sender2 putting the message... 3
    Sender putting the message... 3
    Sender2 putting the message... 4
    Sender putting the message... 4
    Sender2 Done!
    ==========


    Sender Done!
    ==========


    进入线程Receiver
    Receiver Connecting to queue manager: XIR_QM_1502
    Receiver Accessing queue: ESBREQ
    ... Receiver getting the message back again
     ID: MSGID Num: 1 Type: 1 Flag: 0
    The message is: Salemetsizbe Yerasel 1
     ID: MSGID Num: 1 Type: 1 Flag: 0
    The message is: Salemetsizbe Yerasel 1
     ID: MSGID Num: 1 Type: 1 Flag: 0
    The message is: Salemetsizbe Yerasel 2
     ID: MSGID Num: 1 Type: 1 Flag: 0
    The message is: Salemetsizbe Yerasel 2
     ID: MSGID Num: 1 Type: 1 Flag: 0
    The message is: Salemetsizbe Yerasel 3
     ID: MSGID Num: 1 Type: 1 Flag: 0
    The message is: Salemetsizbe Yerasel 3
     ID: MSGID Num: 1 Type: 1 Flag: 0
    The message is: Salemetsizbe Yerasel 4
     ID: MSGID Num: 1 Type: 1 Flag: 0
    The message is: Salemetsizbe Yerasel 4
    Receiver Closing the queue
    Receiver Disconnecting from the Queue Manager
    Receiver Done!
    ==========

    转载于:https://www.cnblogs.com/pricks/p/3904129.html

    展开全文
  • 本文向您展示如何配置Java™/ JMS客户端到IBM®WebSphere®MQ队列管理器的安全套接字层(SSL)连接。 它涵盖测试证书的创建,但不涵盖任何MQ配置信息。 它纯粹是Java / JMS客户指南,并且需要IBM SDK。 需要以下...

    websphere mq

    本文向您展示如何配置从Java™/ JMS客户端到IBM®WebSphere®MQ队列管理器的安全套接字层(SSL)连接。 它涵盖测试证书的创建,但不涵盖任何MQ配置信息。 它纯粹是Java / JMS客户指南,并且需要IBM SDK。

    需要以下步骤1、3和4来配置SSL连接。 仅当您希望配置客户端身份验证时,才执行步骤2。 为了降低复杂性并简化任何潜在问题的调试,建议您最初不要使用客户端身份验证。 建立基本的SSL连接后,可以升级到客户端身份验证。

    如果遇到配置问题,则可能有助于指定调试标志: -Djavax.net.debug=true

    1.创建trustStore

    顾名思义,trustStore拥有您信任的队列管理器的签名CA的证书。 对于Java / JMS客户端,这意味着与队列管理器建立连接时,它将作为初始SSL握手的一部分将其证书发送给我们。 处理所有SSL通信的JSSE将在trustStore中查找以验证刚刚发送的证书。 如果无法验证证书,则连接将终止。

    要创建trustStore并导入证书,可以使用IBM Key Management工具,该工具是Websphere MQ V6的一部分:

    1. 在开始栏中,选择程序=> IBM Websphere MQ => IBM密钥管理
    2. IBM Key Management启动时,单击“ 新建”并设置以下值:
      密钥数据库类型
      JKS
      文档名称
      trustStore
      位置
      您选择的位置
    3. 单击确定继续。
      图1
      设定值
    4. 现在将提示您输入您选择的密码。 仅当您希望向trustStore添加证书时才需要密码。 如果JSSE仅用作trustStore,则不需要密码。 对于此示例,请输入密码。
    5. 单击确定继续。 现在,您应该拥有一个trustStore,可以在其中导入受信任CA的证书。
    6. 选中标签密钥数据库内容下的下拉框。
    7. 选择签署者证书
      图2
      选择签名者证书
    8. 点击添加 系统将提示您输入要添加的证书的位置。 如果您正在使用自签名证书进行测试,则此证书将是“队列管理器”证书,或者是颁发了“队列管理器”证书的CA证书。 有关为SSL配置队列管理器的信息,请参见MQ安全手册,第13章。
    9. 输入以下数据:
      数据类型
      二进制DER数据
      证书文件名
      <队列管理器证书名称>
      位置
      <证书的位置>
    10. 单击确定 将提示您输入标签,标签格式应为<ibmwebspheremq<qmname lowercase>
    11. 单击确定以添加证书。

    2.创建密钥库

    仅当与队列管理器建立连接时希望进行客户端身份验证时,才完成本节。 如果尚未在通道上指定客户端身份验证,则无需完成本节。

    除了存储客户端的个人证书,并且JSSE要求访问密码外,keyStore本质上与trustStore相同。 实际上,您可以将您的个人证书添加到之前创建的trustStore中,它将同时充当trustStore和keyStore,但是现在不需要将以前不需要的密码传递给JSSE,以便它可以访问您的个人证书。

    要创建KeyStore,请按照第1节中的步骤,用keyStore替换trustStore ,直到添加CA证书为止。 此时,请完成以下步骤:

    1. 选中标签密钥数据库内容下的下拉框。
    2. 选择个人证书
      图3
      选择个人证书
    3. 点击新建自签名 这将为您自己创建一个测试证书。
    4. 如果已经有颁发给您的证书,请单击“ 接收”以添加它:
      图4
      接收

      与创建队列管理器个人证书不同,对必须使用的密钥标签没有限制。

    5. 输入如上所示的详细信息。
    6. 单击确定完成。

    设置keyStore的最后一部分是将您的证书或CA证书添加到Queue Managers密钥存储库,以便在客户端发送其证书时,Queue Manager可以对其进行验证。 以下是从keyStore中提取证书的方法,以便可以将其添加到Queue Managers密钥存储库中:

    1. 选中标签密钥数据库内容下的下拉框。
    2. 选择“ 个人证书”
    3. 选择您的证书。
    4. 点击提取证书
      图5
      单击提取证书
    5. 输入证书名称。
    6. 指定位置。
    7. 单击确定完成。

    完成此任务后,只需将其添加到Queue Managers存储库中即可。

    3.将trustStore和keyStore分配给应用程序

    您可以使用应用程序内设置的系统属性或命令行上的-D标志,将trustStore和KeyStore的位置传递给JSSE。 要在应用程序中设置它们,请使用下面的代码。 trustStorekeyStore的位置可以指向同一文件:

    System.setProperty("javax.net.ssl.trustStore","<location of trustStore>");
             System.setProperty("javax.net.ssl.keyStore","<location of keyStore>");
             System.setProperty("javax.net.ssl.keyStorePassword","<password>");

    要使用-D标志:

    java     -Djavax.net.ssl.trustStore=<location of trustStore>
             -Djavax.net.ssl.keyStore=<location of keyStore>
             -Djavax.net.ssl.keyStorePassword=<password><app>

    4.配置CipherSuite

    您希望连接的通道应定义一个CipherSpec 内的Java / JMS应用程序中的CipherSuite必须指定的相匹配CipherSpec 下表将帮助您做到这一点:

    密码规范和密码套件
    密码规范 密码套件
    NULL_MD5 SSL_RSA_WITH_NULL_MD5
    NULL_SHA SSL_RSA_WITH_NULL_SHA
    RC4_MD5_EXPORT SSL_RSA_EXPORT_WITH_RC4_40_MD5
    RC4_MD5_US SSL_RSA_WITH_RC4_128_MD5
    RC4_SHA_US SSL_RSA_WITH_RC4_128_SHA
    RC2_MD5_EXPORT SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5
    DES_SHA_EXPORT SSL_RSA_WITH_DES_CBC_SHA
    RC4_56_SHA_EXPORT1024 SSL_RSA_EXPORT1024_WITH_RC4_56_SHA
    DES_SHA_EXPORT1024 SSL_RSA_EXPORT1024_WITH_DES_CBC_SHA
    TRIPLE_DES_SHA_US SSL_RSA_WITH_3DES_EDE_CBC_SHA
    TLS_RSA_WITH_AES_128_CBC_SHA SSL_RSA_WITH_AES_128_CBC_SHA
    TLS_RSA_WITH_AES_256_CBC_SHA SSL_RSA_WITH_AES_256_CBC_SHA
    AES_SHA_US
    TLS_RSA_WITH_DES_CBC_SHA SSL_RSA_WITH_DES_CBC_SHA
    TLS_RSA_WITH_3DES_EDE_CBC_SHA SSL_RSA_WITH_3DES_EDE_CBC_SHA
    FIPS_WITH_DES_CBC_SHA SSL_RSA_FIPS_WITH_DES_CBC_SHA
    FIPS_WITH_3DES_EDE_CBC_SHA SSL_RSA_FIPS_WITH_3DES_EDE_CBC_SHA

    您可以在许多地方指定CipherSuite

    如果使用的是MQ Java Client,则可以在MQEnvironment.SSLCipherSuite:指定字符串MQEnvironment.SSLCipherSuite:

    MQEnvironment.sslCipherSuite = "SSL_RSA_WITH_NULL_MD5";

    您还可以使用键MQC.SSL_CIPHER_SUITE_PROPERTY将哈希表中的字符串传递给QueueManager构造函数或MQEnvironment.properties哈希表:

    MQEnvironment.properties.put(MQC.SSL_CIPHER_SUITE_PROPERTY, "SSL_RSA_WITH_NULL_MD5");

    要么:

    Hashtable properties = new Hashtable();
    properties.put(MQC.SSL_CIPHER_SUITE_PROPERTY, "SSL_RSA_WITH_NULL_MD5");
    MQQueueManager myQM = new MQQueueManager("MyQMgr", properties);

    如果使用的是MQ JMS客户端,则可以使用setSSLCipherSuite()方法在连接工厂上设置CipherSuite

    MQConnectionFactory factory = new MQConnectionFactory();
    factory.setTransportType(JMSC.MQJMS_TP_CLIENT_MQ_TCPIP);
    factory.setQueueManager("MyQMgr");
    factory.setSSLCipherSuite("SSL_RSA_WITH_NULL_MD5");
    factory.setPort(1414);
    factory.setHostName("127.0.0.1");
    MQConnection connection = factory.createConnection();

    结论

    本文向您展示了如何:

    • 创建一个TrustStore并将Queue Managers证书导入其中。
    • 创建一个密钥库,其中保存已创建的测试证书。
    • 将它们分配给您的应用程序,并配置Websphere MQ JMS客户端以使用它们。

    翻译自: https://www.ibm.com/developerworks/websphere/library/techarticles/0510_fehners/0510_fehners.html

    websphere mq

    展开全文
  • java mq 使用

    2020-09-24 15:57:44
    1、mq地址配置 2、pom.xml mq配置 <activemq-pool.version>5.15.0</activemq-pool.version> <!-- activemq --> <dependency> <groupId>org.apache.activemq</groupId> ...

    1、mq地址配置

    2、pom.xml mq配置

    <activemq-pool.version>5.15.0</activemq-pool.version>

    <!-- activemq -->
            <dependency>
                <groupId>org.apache.activemq</groupId>
                <artifactId>activemq-pool</artifactId>
                <version>${activemq-pool.version}</version>
            </dependency>

    3、底层调取mq

    package unistctest;

    import javax.jms.Connection;
    import javax.jms.ConnectionFactory;
    import javax.jms.Destination;
    import javax.jms.JMSException;
    import javax.jms.MessageProducer;
    import javax.jms.Session;
    import javax.jms.TextMessage;

    import org.apache.activemq.ActiveMQConnectionFactory;
    import org.jeecgframework.core.util.PropertiesUtil;
    import org.jeecgframework.web.system.pojo.base.TSUser;

    import com.thoughtworks.xstream.XStream;
    import com.unistc.mq.SendMQ;
    import com.unistc.mq.exchangeentity.ExchangeMessage;
    import com.unistc.mq.exchangeentity.ExchangeObjectUser;

    public class MSProduct {
        public static int send(String queueName,String data) {
            PropertiesUtil util = new PropertiesUtil("mqinformation.properties");
            String mqAddress = util.readProperty("mqaddress");
            String mqUsername = util.readProperty("username");
            String mqUserPassword = util.readProperty("userpassword");
            // 连接工厂
                    ConnectionFactory factory;
                    // 连接实例
                    Connection connection = null;
                    // 收发的线程实例
                    Session session;
                    // 消息发送目标地址
                    Destination destination;
                    // 消息创建者
                    MessageProducer messageProducer;
                    try {
    //                    factory = new ActiveMQConnectionFactory("admin", "admin", "tcp://10.10.10.45:61616");
                        factory = new ActiveMQConnectionFactory(mqUsername, mqUserPassword, mqAddress);
                        // 获取连接实例
                        connection = factory.createConnection();
                        // 启动连接
                        connection.start();
                        // 创建接收或发送的线程实例(创建session的时候定义是否要启用事务,且事务类型是Auto_ACKNOWLEDGE也就是消费者成功在Listern中获得消息返回时,会话自动确定用户收到消息)
                        session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);
                        // 创建队列(返回一个消息目的地)
                        destination = session.createQueue(queueName);
                        // 创建消息生产者
                        messageProducer = session.createProducer(destination);
                        // 创建TextMessage消息实体
                        TextMessage message = session.createTextMessage(data);
    //                    System.out.println("message==="+message.getText());
                        messageProducer.send(message);
                        session.commit();
                    } catch (JMSException e) {
                        e.printStackTrace();
                    } finally {
                        if (connection != null) {
                            try {
                                connection.close();
                            } catch (JMSException e) {
                                e.printStackTrace();
                            }
                        }
                    }
                    return 1;
        }
        
        
        
        public static void main(String[] args) {
            for(int i =0;i<1;i++) {
                TSUser changeUser = new TSUser();
                changeUser.setUserName("user.getUserName()"+i);
                changeUser.setRealName("user.getRealName()"+i);
                changeUser.setId("user.getId()"+i);
                changeUser.setMobilePhone("user.getMobilePhone()"+i);
                changeUser.setEmail("user.getEmail()"+i);
    //            changeUser.setState("0"+i);
                XStream xStream = new XStream();
                //设置别名, 默认会输出全路径
                xStream.alias("ChangeUser", ExchangeObjectUser.class);
                
                try {
        
                        ExchangeMessage exchangeMessage = SendMQ.assembleExchangeMessage("associationRole", changeUser);
                        SendMQ.send("sbsminbanQueue", exchangeMessage);
                        System.out.println("这个消息发送给sbscmisQueue,用户是"+changeUser.getUserName());
                    
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    }
     

    4、调取封装

    package com.unistc.mq;

    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;

    import org.jeecgframework.web.system.pojo.base.TSUser;

    import com.thoughtworks.xstream.XStream;
    import com.unistc.mq.exchangeentity.ExchangeHeader;
    import com.unistc.mq.exchangeentity.ExchangeMessage;
    import com.unistc.mq.exchangeentity.ExchangeObject;
    import com.unistc.mq.exchangeentity.ExchangeObjectUser;

    import unistctest.MSProduct;

    public class SendMQ {
        public static ExchangeMessage assembleExchangeMessage(String actionType,TSUser tsUser) {
            
            ExchangeObjectUser changeUser = new ExchangeObjectUser();
            changeUser.setUserName(tsUser.getUserName());
            changeUser.setRealName(tsUser.getRealName());
            changeUser.setId(tsUser.getId());
            changeUser.setMobilePhone(tsUser.getMobilePhone());
            changeUser.setEmail(tsUser.getEmail());
            changeUser.setUserKey(tsUser.getPassword());
            
            Calendar calendar = Calendar.getInstance();
    //        calendar.add(Calendar.HOUR, 8);
            ExchangeMessage exchangeMessage = new ExchangeMessage();
            ExchangeHeader exchangeHeader = new ExchangeHeader();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            exchangeHeader.setOperationDate(sdf.format(new Date()));
           
            
            ExchangeObject exchangeObject = new ExchangeObject();
            exchangeObject.setExchangeObjectUser(changeUser);
            exchangeObject.setActionType(actionType);
            exchangeObject.setObjectName("user");
            
            exchangeMessage.setVersion("1.0");
            exchangeMessage.setExchangeHeader(exchangeHeader);
            exchangeMessage.setExchangeObject(exchangeObject);
            return exchangeMessage;
        }
        
        
        public static int send(String queueName ,String data) throws Exception {

            /** 
             * 1 直接发送 2 订阅发送 
             */
            return MSProduct.send(queueName, data);
        }
        public static int send(String queueName ,ExchangeMessage exchangeMessage) throws Exception {

            /** 
             * 1 直接发送 2 订阅发送 
             */
            XStream xStream = new XStream();
            xStream.autodetectAnnotations(true); 
            System.out.println(xStream.toXML(exchangeMessage));
            return MSProduct.send(queueName, xStream.toXML(exchangeMessage));
    //        return 1;
        }
    }
     

    5、调取方法

    private void cleanUpPassAndSend(TSUser user, TSRole tsRole, String actionType) {
            try {
                if (tsRole.getRoleCode().equals(ExchangeConstants.SBS_JBXXGL_ROLENAME)) {
                    ExchangeMessage exchangeMessage = SendMQ.assembleExchangeMessage(actionType, user);
                    SendMQ.send("sbsjbxxglQueue", exchangeMessage);
    //                        System.out.println("这个消息发送给sbsminbanxiaoQueue,用户是"+user.getUserName());
                }
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

     

    展开全文
  • Websphere MQ JavaJMS 客户端的 SSL 配置.doc
  • WebSphere MQ安装配置,java发送接收消息

    千次阅读 2016-08-31 09:18:46
    一.准备工作 二.创建MQ队列管理器,本地队列,通道 三.验证MQ是否配置成功 四.java发送接收消息
  • 描述了java程序代码去访问MQ的SSL加密的通道。如何配置JKS,如何配置MQ服务器的SSL秘钥库,如何配置证书制作证书和秘钥库。主要是如何编写java代码去访问SSL通道并取到数据。
  • MQ队列管理器,队列,通道的配置和使用,包含编写Java程序来实现消息的发送。
  • JAVA连接IBM MQ

    2019-09-14 19:20:31
    1、配置MQ 统一说明: 队列管理器名字为“MyTest” 使用的端口为“1414” 本地队列名称为“LOCALQUEUE” 服务器连接通道名称为 "SERVERCONN" 1.1、创建队列管理器 进入IBM MQ Explorer 创建队列管理器 右键“队列...
  • WebSphere MQ For JAVA编程实例 主要讲解通过Java语言怎样与MQ进行进行数据通信,里面有示例代码
  • java代码利用本地的mq配置,发送消息。从A队列管理至B队列管理器。
  • WebSphere MQ7.0配置与测试 WebSphere MQ发送接收消息的实现 附java 源码
  • 这是我学习MQ的资料,总共三个文档,适合初学者希望你们下下来后好好学习,不枉费我的收集。
  • MQ日志配置

    千次阅读 2017-05-07 17:08:49
    本文档主要介绍 MQ 客户端日志的正常打印方式,MQ 客户端日志格式解析以及如何自定义 MQ 客户端日志配置。 打印 MQ 客户端日志 MQ 客户端日志在问题定位排查中扮演着非常重要的角色,通过日志记录客户端运行...
  • 本文主要通过两台机器,搭建MQ消息传输的环境,并编写测试程序进行测试。 第一、准备工作 准备2台Win2000环境(XP也可),通过以太网连通。 机器A:代码为00000000,IP地址为:10.1.1.1 机器B:代码为88888888,...
  • 前面我们说了RabbitMQ和RocketMQ的安装和简单的使用,这次我们说一下Kafka的安装配置,后面我会用几个真实案例来说一下MQ的真实使用场景。天冷了,不愿意伸手,最近没怎么写博客了,还请见谅。 一、目标  1.知道...
  • MQ配置

    2015-08-24 15:19:27
    java"] http://blog.csdn.net/ruishenh/article/details/22390809 http://www.docin.com/p-985451416.html [/code] [code="java"] ### 操作系统调优 在生产环境部署Broker前,必须要执行os...
  • { "rabbit_version":"3.6.3", "users": [ { "name":"guest", "password_hash":"fd0GyzAf6C6hmgCJ5VU+TSyzUNlzypPlGb7VDKkqUvJqVxyd", "hashing_algorithm":"rabbit_password_hashing_sha256", ...
  • JMS&MQ系列之普通Java程序中加载配置

    千次阅读 2012-09-12 14:54:57
    在普通Java程序(我指的是非Spring等)中加载ActiveMQ配置有两种方式:使用配置文件和不使用配置文件。  1. 使用配置文件  首先编写配置文件,我通常会把src目录删除,然后另建两个source foulder,一个为src/...
  • IBM官方配置指南 [url]http://www-01.ibm.com/support/docview.wss?uid=swg24010367[/url] 另外可以参考IBM关于Security方面的详细文档 [url]...
  • **配置MQ服务器** # useradd mquser1 -u 3001 # passwd mquser1 设置密码为mqtest2015 # su - mqm ~ cd /opt/mqm/bin 设置mq环境变量 ~ source setmqenv -s 创建队列管理器JAVA.QUEUE.MANAGER.1,并启动 ...
  • MQ配置解决方法

    2011-09-28 11:35:10
    MQ配置案例,详细讲解,包含了同一主机内部链接,主机A和主机B的相互连通配置,并且使用java代码连通的配置及其代码
  • 考虑一个具有多线程并配置为使用MQ将消息发送到大型机主机的应用程序.此应用程序配置了一个放置队列和获取队列.想象一下,每个要从主机获取数据的请求都被处理了10个.由于Queue只是其中一个,因此所有这10条消息都同时...
  • IBM MQ安装配置

    千次阅读 2019-05-06 14:37:48
    一、java连接IBMMQ 1、新建队列管理器QM_TEST1 2、在新建的队列管理器下新建本地队列 Q1 3、在 通道 下新建服务器连接通道SVR_C 4、java代码测试连接 MQEnvironment.hostname = "192.168.109.65"; ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 506
精华内容 202
关键字:

java配置mq

java 订阅