由于不可抗因素, 需要给对接方撸一个client的demo。基于比较老的jdk。

所幸找到了这里:http://www.rabbitmq.com/releases/rabbitmq-java-client

干脆拿第一版1.4.0开撸,以下demo:

import java.io.IOException;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.MessageProperties;
import com.rabbitmq.client.ConnectionParameters; public class NewTask { private static final String TASK_QUEUE_NAME = "your_xxx_queue"; public static void main(String[] argv)
throws java.io.IOException {
String hostName ="your.domain.name";
int portNumber = 5672;//AMQP.PROTOCOL.PORT
int ticket = 0;
ConnectionParameters params = new ConnectionParameters();
params.setUsername("username_xxx");
params.setPassword("password_xxx");
params.setVirtualHost("virutalhost_xxxx");
params.setRequestedHeartbeat(0);//TODO:
ConnectionFactory factory = new ConnectionFactory(params);
Connection connection = factory.newConnection(hostName, portNumber); Channel channel = connection.createChannel(); channel.queueDeclare(ticket,TASK_QUEUE_NAME, false, true, false, false, null);
/*
queueDeclare(int ticket,
java.lang.String queue,
boolean passive,
boolean durable,
boolean exclusive,
boolean autoDelete,
java.util.Map<java.lang.String,java.lang.Object> arguments)
*/ String message = "hello"; //http://www.rabbitmq.com/releases/rabbitmq-java-client/v1.4.0/rabbitmq-java-client-javadoc-1.4.0/com/rabbitmq/client/Channel.html#basicPublish
channel.basicPublish(ticket, "", TASK_QUEUE_NAME,
MessageProperties.PERSISTENT_TEXT_PLAIN,
message.getBytes());
System.out.println(" [x] Sent '" + message + "'");
int closeCode = 200;
String closeMessage="job done.";
channel.close(closeCode, closeMessage);
connection.close();
}
//...
}

基本是看着api文档改的,不同版本的api还真是出入不小(特别httpclient_xxx.jar),还好rabbitmq的java client差异不太大。

有两疑问:

1. ticket干嘛的:

貌似官方的faq里面有提到:http://rabbitmq.1065348.n5.nabble.com/What-is-ticket-object-and-how-does-it-get-created-td11931.html

意思初期的不太成熟的一个安全措施的想法, 后面给砍了。 传0即可。

2. closecode 

默认的close函数用了默认的closecode ,和closemessage。

https://www.rabbitmq.com/releases/rabbitmq-java-client/current-javadoc/com/rabbitmq/client/Connection.html#close--

因此低版本中,需要显示的传这两个参数就好了:

closecode:200, 参考:https://www.rabbitmq.com/releases/rabbitmq-java-client/current-javadoc/constant-values.html#com.rabbitmq.client.AMQP.REPLY_SUCCESS

closemessage: 'OK'

来源(为了更好的排版阅读):http://www.cnblogs.com/Tommy-Yu/p/6402672.html

rabbitmq - java client lib一二事的更多相关文章

  1. 译:1. RabbitMQ Java Client 之 "Hello World"

    这些教程介绍了使用RabbitMQ创建消息传递应用程序的基础知识.您需要安装RabbitMQ服务器才能完成教程 1. 打造第一个Hello World 程序 RabbitMQ是一个消息代理:它接受和转 ...

  2. 五、RabbitMQ Java Client基本使用详解

    Java Client的5.x版本系列需要JDK 8,用于编译和运行.在Android上,仅支持Android 7.0或更高版本.4.x版本系列支持7.0之前的JDK 6和Android版本. 加入R ...

  3. 译:2. RabbitMQ Java Client 之 Work Queues (工作队列)

    在上篇揭开RabbitMQ的神秘面纱一文中,我们编写了程序来发送和接收来自命名队列的消息. 本篇我们将创建一个工作队列,工作队列背后的假设是每个任务都交付给一个工作者 本篇是译文,英文原文请移步:ht ...

  4. 译:3.RabbitMQ Java Client 之 Publish/Subscribe(发布和订阅)

    在上篇 RabbitMQ 之Work Queues (工作队列)教程中,我们创建了一个工作队列,工作队列背后的假设是每个任务都交付给一个工作者. 在这一部分,我们将做一些完全不同的事情 - 我们将向多 ...

  5. 译:4.RabbitMQ Java Client 之 Routing(路由)

    在上篇博文 译:3.RabbitMQ 之Publish/Subscribe(发布和订阅)  我们构建了一个简单的日志系统 我们能够向许多接收者广播日志消息. 在本篇博文中,我们将为其添加一个功能 - ...

  6. 译:5.RabbitMQ Java Client 之 Topics (主题)

    在 上篇博文 译:4.RabbitMQ 之Routing(路由) 中,我们改进了日志系统. 我们使用的是direct(直接交换),而不是使用只能进行虚拟广播的 fanout(扇出交换) ,并且有可能选 ...

  7. 译:6.RabbitMQ Java Client 之 Remote procedure call (RPC,远程过程调用)

    在  译:2. RabbitMQ 之Work Queues (工作队列)  我们学习了如何使用工作队列在多个工作人员之间分配耗时的任务. 但是如果我们需要在远程计算机上运行一个函数并等待结果呢?嗯,这 ...

  8. RabbitMQ的使用(五)RabbitMQ Java Client简单生产者、消费者代码示例

    pom文件: <dependencies> <dependency> <groupId>com.rabbitmq</groupId> <artif ...

  9. [Kerberos] Java client访问kerberos-secured cluster

    使用java client访问kerberos-secured cluster,最重要的是先从admin那里拿到可用的keytab文件,用来作认证.接下来就是调整连接的配置.以下先用连接hdfs为例进 ...

随机推荐

  1. fzu1050 Number lengths(对数公式)

    http://acm.fzu.edu.cn/problem.php?pid=1050 cmath头文件里有两种对数log()和log10(),一个是自然对数,一个是以10为底, 求n!的位数,根据对数 ...

  2. iOS:检测多媒体(相机、相册、麦克风)设备权限,弹框提示

    一.感言 新年伊始,万象更新,一转眼,就2019年了. 作为一个科班生,从事移动端开发好几年了,回顾曾经的摸爬滚打,兢兢业业,严格的来说,多少算是入行了. 过去成绩如何暂且不说,新的一年,我当加倍努力 ...

  3. 转: 关于linux用户时间与系统时间的说明

    写的很不错的一篇. https://blog.csdn.net/mmshixing/article/details/51307853

  4. SSE图像算法优化系列二十五:二值图像的Euclidean distance map(EDM)特征图计算及其优化。

    Euclidean distance map(EDM)这个概念可能听过的人也很少,其主要是用在二值图像中,作为一个很有效的中间处理手段存在.一般的处理都是将灰度图处理成二值图或者一个二值图处理成另外一 ...

  5. python接口自动化测试(三)-requests.post()

    上一节介绍了  requests.get()  方法的基本使用,本节介绍  requests.post()  方法的使用: 本文目录: 一.方法定义 二.post方法简单使用 1.带数据的post 2 ...

  6. 用virsh console vhosts 卡住

    [root@666 ok]# virsh list --all Id Name State ---------------------------------------------------- 1 ...

  7. TypeScript和JavaScript的一些小技巧记录

    项目里使用到的技巧,记录一下,会持续更新. JS的技巧完全可以使用到TS上哦. JS 向下取整 Math.floor(4.5); 简写: var num = 4.5; ~~num; num <& ...

  8. FFmpeg: FFmepg中的sws_scale() 函数分析

    FFmpeg中的 sws_scale() 函数主要是用来做视频像素格式和分辨率的转换,其优势在于:可以在同一个函数里实现:1.图像色彩空间转换, 2:分辨率缩放,3:前后图像滤波处理.不足之处在于:效 ...

  9. ASP.NET MVC 右键点击添加没有区域(Area)、控制器、试图等选项

    在MVC项目中准备添加控制器.区域时发现没有控制器这个选项,当时没有在意以为VS出问题了,网上所搜了一下,有人说没有安装:Microsoft.AspNet.Mvc或者需要升级. 本次的解决如下: 1) ...

  10. linux 查找并kill进程

    以php以关键字查找进程 $ ps aux | grep php root             32957   0.0  0.1  2470904   8908 s002  S+    4:53下 ...