www.496net > 前沿科技 > 分布式架构核心组件消息队列,RabbitMQ实例教程

原标题:分布式架构核心组件消息队列,RabbitMQ实例教程

浏览次数:185 时间:2019-09-17

01

RabbitMQ实例教程:Hello RabbitMQ World之Java达成

  RabbitMQ要落到实处Hello World,其实也很轻巧。只需贰个服务器来发送消息,另外有个顾客端接收消息就可以。

  全体的安顿流程如下:

图片 1

  音讯生产者发送Hello到音信队列,音讯花费者从队列中收取消息。

  下载注重Jar包

  RabbitMQ要用Java实现发送消息,就亟须选择Java客商端库。近日RabbizMQ的Java客商端库最新版为为 3.5.5 。能够从Maven酒店下载,也足以直接去官方网站下载。

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

运用Java创立发送者

package com.favccxx.favrabbit;
 
import java.io.IOException;
import java.util.concurrent.TimeoutException;
 
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
 
public class Sender {
 
    private final static String QUEUE_NAME = "hello";
 
    public static void main(String[] argv) throws IOException, TimeoutException {
        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("localhost");
 
        Connection connection = factory.newConnection();
        Channel channel = connection.createChannel();
        channel.queueDeclare(QUEUE_NAME, false, false, false, null);
        String message = "Hello RabbitMQ World!";
        channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
        System.out.println(" [x] Sent '" message "'");
 
    }
}

RabbitMQ调控台监察和控制新闻队列

  运营方面的代码,从RabbitMQ调整台就能够知见刚刚发送的音信。

图片 2图片 3

  使用Java接收信息

package com.favccxx.favrabbit;
 
import java.io.IOException;
import java.util.concurrent.TimeoutException;
 
import com.rabbitmq.client.AMQP;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.Consumer;
import com.rabbitmq.client.DefaultConsumer;
import com.rabbitmq.client.Envelope;
 
public class Receiver {
 
    private final static String QUEUE_NAME = "hello";
 
    public static void main(String[] argv)
            throws java.io.IOException, java.lang.InterruptedException, TimeoutException {
 
        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("localhost");
        Connection connection = factory.newConnection();
        Channel channel = connection.createChannel();
 
        channel.queueDeclare(QUEUE_NAME, false, false, false, null);
        System.out.println(" [*] Waiting for messages. To exit press CTRL C");
 
        Consumer consumer = new DefaultConsumer(channel) {
            @Override
            public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties,
                    byte[] body) throws IOException {
                String message = new String(body, "UTF-8");
                System.out.println(" [x] Received '" message "'");
            }
        };
        channel.basicConsume(QUEUE_NAME, true, consumer);
    }
}

分级运维音讯发送者和音信接收者,从RabbitMQ调整台可以看看实时的情景。

图片 4

到此甘休,RabbitMQ的Hello World工作就得了了,是还是不是对音信队列有了部分青眼了呢?

CentOS 5.6 安装RabbitMQ

RabbitMQ顾客端C 安装详细记录

用Python尝试RabbitMQ

RabbitMQ集群景况生产实例安插

Ubuntu下PHP RabbitMQ使用

在CentOS上安装RabbitMQ流程

RabbitMQ概念及意况搭建 

分布式架构核心组件消息队列,RabbitMQ实例教程。RabbitMQ入门教程 

RabbitMQ 的事无巨细介绍:请点这里
RabbitMQ 的下载地址:请点这里

正文永恒更新链接地址:

RabbitMQ World之Java达成RabbitMQ要落实Hello World,其实也很简短。只需一个服务器来发送新闻,其它有个客户端接收消息即...

  RabbitMQ要得以实现Hello World,其实也很轻松。只需三个服务器来发送音讯,其它有个客商端接收音信就可以。

什么是RabbitMQ?

  全部的统一准备流程如下:

RabbitMQ 是贰个基于AMQP公约,服务端用Erlang开采的音信队列,协助Java、Python、Ruby、.NET、JMS、C、PHP、ActionScript、XMPP、STOMP等,帮忙AJAX。所谓音讯队列正是用来促成系统与系统里头,程序与程序之间开展通讯的中间件。全部来看是二个异步的进度,由生产者来生产音信,这几个新闻会被先松开一个器皿中,当满意一定条件时,这一个新闻会被花费者(Subscribe )拿走去花费。这么些容器就是队列。生产者和客户之间服从的磋商就是AMQP合同。其次还足以对客户设置三个优先级,以及对客户的伏乞进行限流,对负荷举办中用均衡。

图片 5

02

  音信生产者发送Hello到消息队列,音信花费者从队列中接受音讯。

行使场景有何?

  下载信赖Jar包

1、顾客注册时索要发送验证邮箱可能短信验证。使用音信队列之后,应用程序只必要关怀注册成功就可以。不需求静观其变邮件也许短信发送成功的响应。因为这么些是由花费者去达成的。

  RabbitMQ要用Java达成出殡和埋葬消息,就务须接纳Java顾客端库。近日RabbizMQ的Java顾客端库最新版为为 3.5.5 。能够从Maven旅舍下载,也足以一向去官方网站下载。

2、电商系统,客户下单费用成功现在,对应的仓库储存供给开展翻新。大家得以调用仓库储存系统提供的接口,可是如此只要仓库储存系统出现故障就能招致仓库储存不能规范的创新。况兼耦合性相当高。我们能够透过新闻队列举行解耦,何况消息队列具备漫长化功用。有限协理数据的正确性

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

3、秒杀系统,能够经过音信队列过滤掉一部分诉求,缓慢解决服务的下压力。

行使Java创造发送者

4、注册、日志、监察和控制系统等超越四分三只必要最后一致性的现象

package com.favccxx.favrabbit;
 
import java.io.IOException;
import java.util.concurrent.TimeoutException;
 
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
 
public class Sender {
 
    private final static String QUEUE_NAME = "hello";
 
    public static void main(String[] argv) throws IOException, TimeoutException {
        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("localhost");
 
        Connection connection = factory.newConnection();
        Channel channel = connection.createChannel();
        channel.queueDeclare(QUEUE_NAME, false, false, false, null);
        String message = "Hello RabbitMQ World!";
        channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
        System.out.println(" [x] Sent '" message "'");
 
    }
}

03

RabbitMQ调节台监察和控制消息队列

音讯队列常见关键词

  运维方面包车型大巴代码,从RabbitMQ调整台就能够观望刚刚发送的信息。

AMQP的中坚是Producer、Broker(音信队列的服务器实体)、Consumer

图片 6图片 7

Producer/Consumer概念相比好驾驭,无非便是四个劳动者创设一个音信去由成本者去开展有关的逻辑管理。

  使用Java接收音信

Broker信息队列的服务器,三个Broker能够分包七个VirtualHost,主要起到了二个隔开的功能。 而一个VirtualHost又席卷以下三有个别

package com.favccxx.favrabbit;
 
import java.io.IOException;
import java.util.concurrent.TimeoutException;
 
import com.rabbitmq.client.AMQP;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.Consumer;
import com.rabbitmq.client.DefaultConsumer;
import com.rabbitmq.client.Envelope;
 
public class Receiver {
 
    private final static String QUEUE_NAME = "hello";
 
    public static void main(String[] argv)
            throws java.io.IOException, java.lang.InterruptedException, TimeoutException {
 
        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("localhost");
        Connection connection = factory.newConnection();
        Channel channel = connection.createChannel();
 
        channel.queueDeclare(QUEUE_NAME, false, false, false, null);
        System.out.println(" [*] Waiting for messages. To exit press CTRL C");
 
        Consumer consumer = new DefaultConsumer(channel) {
            @Override
            public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties,
                    byte[] body) throws IOException {
                String message = new String(body, "UTF-8");
                System.out.println(" [x] Received '" message "'");
            }
        };
        channel.basicConsume(QUEUE_NAME, true, consumer);
    }
}

Exchange:由它依据有个别准绳 去决定音信最后路由到哪个队列。

独家运转消息发送者和音信接收者,从RabbitMQ调控台能够看来实时的景象。

Binding:绑定,它的机能正是把 Exchange 和 Queue 依照路由法规绑定起来。若无bind,音信会一直被撇下。

图片 8

Queue:存款和储蓄新闻的地点,每一种新闻都会被投入到贰个或三个种类。。

到此甘休,RabbitMQ的Hello World工作就身故了,是或不是对音信队列有了一些青眼了吧?

完全流程如下图

CentOS 5.6 安装RabbitMQ http://www.linuxidc.com/Linux/2013-02/79508.htm

图片 9

RabbitMQ客商端C 安装详细记录 http://www.linuxidc.com/Linux/2012-02/53521.htm

04

用Python尝试RabbitMQ http://www.linuxidc.com/Linux/2011-12/50653.htm

Java操作RabbitMQ

RabbitMQ集群情况生产实例计划 http://www.linuxidc.com/Linux/2012-10/72720.htm

1、创制链接工厂的工具类import com.rabbitmq.client.ConnectionFactory;

Ubuntu下PHP RabbitMQ使用 http://www.linuxidc.com/Linux/2010-07/27309.htm

public class RabbitFactory {

在CentOS上安装RabbitMQ流程 http://www.linuxidc.com/Linux/2011-12/49610.htm

public ConnectionFactory getFactory() {

RabbitMQ概念及条件搭建 http://www.linuxidc.com/Linux/2014-12/110449.htm

// 制造链接工厂

RabbitMQ入门教程  http://www.linuxidc.com/Linux/2015-02/113983.htm

ConnectionFactory factory = new ConnectionFactory();

RabbitMQ 的详实介绍:请点这里
RabbitMQ 的下载地址:请点这里

factory.setHost("127.0.0.1");

正文恒久更新链接地址:http://www.linuxidc.com/Linux/2015-10/124089.htm

factory.setUsername;

图片 10

factory.setPassword;

factory.setPort;

return factory;

}

}

2、生产者import com.rabbitmq.client.Channel;

import com.rabbitmq.client.Connection;

import com.rabbitmq.client.ConnectionFactory;

import java.io.IOException;

import java.util.concurrent.TimeoutException;

/**

* 音讯生产者

*/

public class Producer {

本文由www.496net发布于前沿科技,转载请注明出处:分布式架构核心组件消息队列,RabbitMQ实例教程

关键词: 互联网 澳门新莆京 架构 队列

上一篇:树起量子通信中国标杆,英国开通全球首个商用

下一篇:没有了