RabbitMQ监控(2)——RabbitMQ-javaclient使用


一,基础概念:

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

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

二简单范例:


maven依赖

<dependency>
  <groupId>com.rabbitmq</groupId>
  <artifactId>amqp-client</artifactId>
  <version>3.6.1</version>
</dependency>


      

连接范例:

ConnectionFactory factory = new ConnectionFactory();
factory.setUsername(userName);
factory.setPassword(password);
factory.setVirtualHost(virtualHost);
factory.setHost(hostName);
factory.setPort(portNumber);
Connection conn = factory.newConnection();



简便方式:

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


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

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

Channel channel = conn.createChannel();

提醒:

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

channel.close();
conn.close();

 

使用Exchanges and Queues

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

发送消息:

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

接收消息

boolean autoAck = false;
channel.basicConsume(queueName, autoAck, "myConsumerTag",
     new DefaultConsumer(channel) {
         @Override
         public void handleDelivery(String consumerTag,
                                    Envelope envelope,
                                    AMQP.BasicProperties properties,
                                    byte[] body)
             throws IOException
         {
             String routingKey = envelope.getRoutingKey();
             String contentType = properties.getContentType();
             long deliveryTag = envelope.getDeliveryTag();
             // (process the message components here ...)
             channel.basicAck(deliveryTag, false);
         }
     });


参考官方文档:

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的次数增多,量的累计,我相信,我们也会慢慢优秀起来,追赶超越!

转载于:https://my.oschina.net/u/3627638/blog/1489451

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值