RabbitMQ监控(2)——RabbitMQ

本文旨在为大家打开java关于rabbitmq操作的窗户,简单应用,帮助理解官方文档,详细内容,还是要参考官方文档,这里是官方文档的中文过渡区

一,基础概念:

      每个rabbitmq-server叫做一个Broker,等着tcp连接进入。
      在rabbitmq-server进程内有Exchange,定义了这个消息的发送类型。(一对多、直连、多对多等等)
        Queue是进程内的逻辑队列,有多个,有名字。
        Binding联系Exchane与Queue。

        Routing key由生产者指定。Binding key由消费者指定。二者联合决定一条消息的来去。

二简单范例:

maven依赖

1<dependency> 2 <groupId>com.rabbitmq</groupId> 3 <artifactId>amqp-client</artifactId> 4 <version>3.6.1</version> 5</dependency>

      

连接范例:

1ConnectionFactory factory = new ConnectionFactory(); 2factory.setUsername(userName); 3factory.setPassword(password); 4factory.setVirtualHost(virtualHost); 5factory.setHost(hostName); 6factory.setPort(portNumber); 7Connection conn = factory.newConnection();

简便方式:

1ConnectionFactory factory = new ConnectionFactory(); 2factory.setUri("amqp://userName:password@hostName:portNumber/virtualHost"); 3Connection conn = factory.newConnection();

以上是得到一个rabbitmq连接最最基础的代码。

最后这个channel就可以用来收和发消息了。

Channel channel = conn.createChannel();

提醒:

请在程序结尾处关闭链接,否则比较耗费资源:

1channel.close(); 2conn.close();

使用Exchanges and Queues

1channel.exchangeDeclare(exchangeName, "direct", true); 2String queueName = channel.queueDeclare().getQueue(); 3channel.queueBind(queueName, exchangeName, routingKey);

发送消息:

1byte[] messageBodyBytes = "Hello, world!".getBytes(); 2channel.basicPublish(exchangeName, routingKey, null, messageBodyBytes);

接收消息

1boolean autoAck = false; 2channel.basicConsume(queueName, autoAck, "myConsumerTag", 3 new DefaultConsumer(channel) { 4 @Override 5 public void handleDelivery(String consumerTag, 6 Envelope envelope, 7 AMQP.BasicProperties properties, 8 byte[] body) 9 throws IOException 10 { 11 String routingKey = envelope.getRoutingKey(); 12 String contentType = properties.getContentType(); 13 long deliveryTag = envelope.getDeliveryTag(); 14 // (process the message components here ...) 15 channel.basicAck(deliveryTag, false); 16 } 17 });

参考官方文档:

http://www.rabbitmq.com/api-guide.html

官方api

http://www.rabbitmq.com/releases/rabbitmq-java-client/v3.6.1/rabbitmq-java-client-javadoc-3.6.1/

总结:

         简单易行,这样的工具,使我们需要的,也是我们想要的,看着国外N多好用的中间件,一个接一个出现,国内虽然这些年也改变了不少,但是我们和国外优秀的团队和开发理念上还是有差距的,随着阅读外国api的次数增多,量的累计,我相信,我们也会慢慢优秀起来,追赶超越!

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

KVM调整cpu和内存

一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid