工程师消息代理用法 - housekeeper-software/coocare GitHub Wiki

目的

使用Rabbitmq作为消息队列,实现应用之间的解耦。

后端需要提供两个web接口

webQueryUserUrl: http://hp-php.coocare.com/ws/interface/queryUser?group=1/2
webLoginUrl:https://hp-php.coocare.com/ws/interface/loginForJava?communicationId
第一个接口返回
{
   "users":[
      {
         "userId":"e0001",
         "channelId":"huiguanjia_dl"
      },
      {
         "userId":"e0002",
         "channelId":"huiguanjia_dl"
      }
   ]
}
第二个接口使用现有的即可。
{
   "token":"xx",
   "communication_server":"内网ip",
   "channel_id":""
}

java 端

可以向 web_to_user_1,web_to_user_2,web_to_user_3三个任意个队列发消息,
需要在 user_to_web_1,user_to_web_2,user_to_web_3三个队列接收用户消息
其中有个 eproxy_system_event需要一个单独的任务接收消息,这里实时报告工程师代理服务器的状态,
这里包含工程师在线,掉线,成功,失败,以及producer,consumer的各种事件。这些消息设置1个小时过期。

rabbitmq的交换机/队列的配置:

 "producer":{
      "connection":{
         "host":"192.168.180.70:5672",
         "connectionTimeout":500,
         "username":"root",
         "password":"ssc82893388",
         "virtualHost":"/",
         "heartbeat":60,
         "channelMax":0,
         "frameMax":131072,
         "saslMethod":0
      },
      "exchange":{
         "name":"huiguanjia_dl",
         "type":"direct",
         "pasive":false,
         "durable":true,
         "auto_delete":false,
         "internal":false
      },
      "queue":[
         {
            "name":"user_to_web_1",
            "passive":false,
            "durable":true,
            "auto_delete":false,
            "exclusive":false,
            "delivery_mode":2,
            "confirm":false,
            "mandatory":false,
            "immediate":false,
            "arguments":{
               "x-message-ttl":0
            }
         },
         {
            "name":"user_to_web_2",
            "passive":false,
            "durable":true,
            "auto_delete":false,
            "exclusive":false,
            "delivery_mode":2,
            "confirm":false,
            "mandatory":false,
            "immediate":false,
            "arguments":{
               "x-message-ttl":0
            }
         },
         {
            "name":"user_to_web_3",
            "passive":false,
            "durable":true,
            "auto_delete":false,
            "exclusive":false,
            "delivery_mode":2,
            "confirm":false,
            "mandatory":false,
            "immediate":false,
            "arguments":{
               "x-message-ttl":0
            }
         },
         {
            "name":"eproxy_system_event",
            "report":true,
            "passive":false,
            "durable":true,
            "auto_delete":false,
            "exclusive":false,
            "delivery_mode":2,
            "confirm":false,
            "mandatory":false,
            "immediate":false,
            "arguments":{
               "x-message-ttl":3600000
            }
         }
      ]
   },
   "consumer":{
      "connection":{
         "host":"192.168.180.70:5672",
         "connectionTimeout":500,
         "username":"root",
         "password":"ssc82893388",
         "virtualHost":"/",
         "heartbeat":60,
         "channelMax":0,
         "frameMax":131072,
         "saslMethod":0
      },
      "exchange":{
         "name":"communication",
         "type":"direct",
         "pasive":false,
         "durable":true,
         "auto_delete":false,
         "internal":false
      },
      "queue":[
         {
            "name":"web_to_user_1",
            "passive":true,
            "durable":true,
            "auto_delete":false,
            "exclusive":false,
            "tag":"server1",
            "no_local":false,
            "no_ack":true,
            "qos":10,
            "basic_get":false
         },
         {
            "name":"web_to_user_2",
            "passive":true,
            "durable":true,
            "auto_delete":false,
            "exclusive":false,
            "tag":"server2",
            "no_local":false,
            "no_ack":true,
            "qos":10,
            "basic_get":false
         },
         {
            "name":"web_to_user_3",
            "passive":true,
            "durable":true,
            "auto_delete":false,
            "exclusive":false,
            "tag":"server2",
            "no_local":false,
            "no_ack":true,
            "qos":10,
            "basic_get":false
         }
      ]
   }