1、主流的消息中间件简单介绍哦。

  1)、ActiveMQ是Apache出品,最流行的,能力强劲的开源消息总线,并且它一个完全支持jms(java message service)规范的消息中间件。其丰富的api,多种集群构建模式使得他成为业界老牌消息中间件,在中小企业中应用广泛。
如果不是高并发的系统,对于ActiveMQ,是一个不错的选择的,丰富的api,让你开发的很愉快哟。
注意:MQ衡量指标:服务性能,数据存储,集群架构。

  2)、kafka是LinkedIn开源的分布式发布/订阅消息系统,目前归属于Apache顶级项目。kafka主要特点是基于Pull的模式来处理消息消费,最求高吞吐量,一开始的目的就是用于日志收集和传输,0.8版本开始支持复制,不支持事务,对消息的重复,丢失,错误没有严格要求,适量产生大量数据的互联网服务的数据收集业务。

  3)、RocketMQ是阿里开源的消息中间件,目前也已经孵化为了Apache顶级项目,它是纯java开发,具有高吞吐量、高可用性、适合大规模分布式系统应用的特点。RocketMQ思路起源于kafka,它对消息的可靠传输以及事务性做了优化,目前在阿里集团被广泛用于交易,充值,流计算、消息推送、日志流式处理,binglog分发等场景。

  4)、RabbitMQ是使用Erlang语言开发的开源消息队列系统,基于AMQP协议来实现的。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅模式)、可靠性、安全。AMQP协议更多用在企业系统内,对数据一致性、稳定性和可靠性要求很高的场景,对性能和吞吐量的要求还在其次。

2、RabbitMQ的简单介绍。

  RabbitMQ是一个开源的消息代理和队列服务器,用来通过普通协议在完全不同的应用之间共享数据(即RabbitMQ可以实现跨语言、跨平台操作),RabbitMQ是使用Erlang语言来编写的,并且RabbitMQ是基于AMQP协议的。

3、RabbitMQ高性能的原因所在是什么呢?
  答:RabbitMQ所使用的开发语言是ErLang语言,ErLang其最初在于交换机领域的架构模式,这样使得RabbitMQ在Broker之间进行数据交互的性能是非常优秀的。Erlang的优点,Erlang有着和原生Socket一样的延迟。性能十分优越。

4、AMQP高级消息队列协议是什么?
  答:AMQP全称是Advanced Message Queuing Protocol(高级消息队列协议)。AMQP定义是具有现代特征的二进制协议。是一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。

5、AMQP协议模型。

aaarticlea/jpeg;base64,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6KMymUw6dOhQsd+vS5cusre31+bNm3XkyBElJCSoe/fuViHI7RhDjRo15ObmpkuXLunEiRNWm3/WrFlT1atXl3Rj9kL2bIQqVaqoZs2aVkf5Zu89cvPGoHmpUqWK+vfvr8TERM2aNcuibNeuXXJ0dNTrr79uEbbY2nskW1pamtUpLZK0Y8cOSf/b+LOobWyxNaMlN/3795e9vb1WrVql1atXy97eXv369cu3Xe/eveXs7KwVK1bYPHUm29mzZxUcHCwXFxe99NJLBR5XXk6fPm2xkbAtXbp00ZYtWwr8Ly/Z30MFPYIbuJ0ISAAAAHBfmzp1qi5cuGB1ffXq1crMzLQ4ejR76YO/v7/OnTtnUT8rK0sRERE6f/78LY3jgQceUNOmTRUVFaW1a9fK3t7earnJ7RqDp6entm3bpscee0xnzpxR9erVizQDIDtMyO1IV1uGDBmi8uXL66efftLBgwfN152cnJSRkWERiCQnJ2v69Ol59jdt2jSlpqaaX58+fVpz586VpFxPcLmVNjdzc3PT9evXdfny5XzrSjc+9Ldv315Hjx7Vzp079dxzz8nLyyvfdg888IDGjBmj1NRUjRgxwuJ5ZTt69KiGDx+uxMREjRw5Ug888ECBxpSXkydP6uzZs6pUqZLN8uxZPR9++KE8PT3l7Oys33//XZ6envL09FTZsmX122+/KSEhwXzN09NT8+bN08CBA232mf09VNCACridWGIDAACA+9rKlSu1atUqPf7446pZs6bs7e0VFxenmJgYlStXTqNHjzbX7dixo3bu3Km1a9eqR48eatq0qSpXrqykpCT98ssvOnPmjEJCQnL9AJmfF198UZGRkfrpp5/UrFkzi1NqbtcYUlJSFB8fr99++00HDx6UyWTSqFGjJEmffPLJLb2Ptm3bavny5dqxY4e6detWoDZubm7y8/PTv//9b02dOlXBwcGyt7dX586dFRISoiFDhqhNmzZydnbWrl271LJlS5vBgHRjP5Fr166pR48eat68uVJSUrRz504lJyerb9++atq0abG0yalhw4aKjIyUn5+fvLy8NGPGjHzbDBgwQFu2bFFWVlaep8fk1KtXLyUmJmru3LkaOnSo6tevr0ceeURZWVk6fvy4fv31V9nb22vkyJHq27dvgfvNlp6ertGjR6tSpUry8PBQamqqtm7dKkl69tlnbbZZ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gcpqHVHW4i5r8Woy/qw0R1JSEh48eIC2bdvK1SvXr1+Hk5MTXr9+DQ8PDyGx/iHytwcWLFiANWvWoFOnTujatSuqVaum9nnS09MRGhqKS5cuYcyYMahduzYCAwMhFotRqVIltG3bFjo6Ojh9+jQyMzPRs2dPtdoeUVFRqFixosJKO1KpFFlZWdDX14dIJMKjR49UrjKnyueqz0ob9iApvrIW78fEBMlnoMm/YJSHCRIiUqWs1hFlLe6yFq8m489Kc8iGXlatWhXW1tbQ19fHgwcP8N9//0EqlWL8+PEYPXp0SYdJZRQTJMVX1uL9mDjEhoiIiIiIPjsrKysMHz4cly5dQmhoKMRiMczMzNCpUyc4Ojrim2++KekQiUjDMEFC9BkUJ/uqiRlbIiIi0hwmJiaYOnUqpk6dWtKhEBEBAEQlHQARERERERERUUljgoSIiIiIiIiINB4TJERERERERESk8ZggISIiIiKHpx0sAAAgAElEQVQiIiKNxwQJEREREREREWk8JkiIiIiIiIiISOMxQUJEREREREREGo8JEiIiIiIiIiLSeEyQEBEREREREZHGY4KEiIiIiIiIiDQeEyREREREREREpPGYICEiIiIiIiIijccECRERERERERFpPCZIiIiIiIiIiEjjMUFCRERERERERBqPCRIiIiIiIiIi0nhMkHwGZmZmAICMjIwSjoSIiEqTN2/eAPi/eoKIiIiISg4TJJ9B3bp1AQB37twp4UiIiKg0kdUL9erVK+FIiIiIiIgJks/AwcEBAODi4oLo6GjhjSEREWmmN2/eIDo6Gq6urgCA3r17l3BERERERKRT0gFogr59+yIkJATnzp3Db7/9VtLhEBFRKdKxY0f069evpMMgIiIi0nhMkHwGIpEIa9aswbFjx3DixAnEx8cjLS2tpMMiIqISYmZmhnr16qF3797o27cvtLS0SjokIiIiIo3HBMlnIhKJ0L9/f/Tv37+kQyEiIiIiIiKi93AOEiIiIiIiIiLSeEyQEBEREREREZHGY4KEiIiIiIiIiDQeEyREREREREREpPGYICEiIiIiIiIijcdVbIiIiIio1LG1tS3pEIiISMOwBwkRERERlRpMjBDRx1KvXj1UqFChpMOgMoQ9SIiIiIio1HB3dy/pEKgMkCXSoqKiSjgSIvqSsAcJERERERGVGRKJROnXREQfigkSIiIiIiIqM2JjY4Wvb9y4UYKRENGXhgkSIiIiIiIqM4KDg5V+TUT0oZggISIiIiKiMkEqleLMmTPC98HBwZBKpSUYERF9SZggISIiIiKiMuHOnTtISkoSvk9KSsKdO3dKMCIi+pIwQUJERERERGWCsiE1+XuUEBF9CCZIiIiIiIioTFCWIOE8JET0sTBBQkREREREpd69e/eQkJCgUH7//n3cv3//8wdERF8cJkiIiIiIiKjUK2goDXuRENHHwAQJERERERGVegUlQTgPCRF9DEyQEBERERFRqZaYmFjgajW3b9+WW92GiKg4mCAhIiIiIqJSTZ0hNBxmQ0QfigkSIiIiIiIq1dRJfpw+ffozREJEXzImSIiIiIiIqNRKTk5GbGxsofvFxsYiOTn5M0RERF8qnZIOgIiIiIiISJVq1aohKipKrszW1hYAFMqJiD4Ee5AQERERERERkcZjgoSIiIiIiIiINB4TJERERERERESk8ZggISIiIiIiIiKNxwQJEREREREREWk8JkiIiIiIiIiISOMxQUJEREREREREGo8JEiIiIiIiIiLSeEyQEBEREREREZHGY4KEiIiIiIiIiDQeEyREREREREREpPGYICEiIiIiIiIijccECRERERERERFpPCZIiIiIiIiIiEjjMUFCRERERERERBqPCRIiIiIiIiIi0nhMkBARERERERGRxmOChIiIiIiIiIg0HhMkRERERERERKTxmCAhIiIiIiIiIo3HBAkRERERERERaTwmSIiIiIiIiIhI4zFBQkREREREREQajwkSIiIiIiIiItJ4TJAQERERERERkcZjgoSIiIiIiIiINB4TJEREREREpPH8/f0RHR0tV3b//n24uroiPT39o1wjNTUVW7ZsKfb54uPjCz321atXuH79erHOT6TpdEo6ACIiIiIiopKUk5ODDRs2oFq1ajhw4IBQnpycDB8fHwwfPhzly5cHACQkJCg9h5WVVaHXCQoKws6dO3HlyhVs3boVOjrqfxx78+YNxowZg8qVK2Pz5s2oXLmy0v1WrlyJkydPYvny5ejZs2eh55VIJMjKysKbN2+QkZGB169f4/Xr10hPT0d6ejpevnyJtLQ0vHz5Ei9evMCLFy+wd+9e4XkQfUmYICEiIiIiIo128uRJpKenY8mSJYXuO3DgQKXlERER0NbWRnh4uMpj69SpAysrK9y+fRsBAQGwtLRUup+lpSVq1qwpV2ZsbIyFCxdi9uzZGD16NLZv3w4LCwu5fc6ePYuTJ0+iVatW6Natm9JzHz9+HNu3b0dWVhYyMzORnZ2tdD9tbW2YmJjA1NRU+K9mzZpo1qwZsrKymCChLxITJEREREREpLGkUim8vLzQtGlTdOzYEUBej5LHjx/j6dOnAIDExETk5OQIx8ydOxeDBg0CALi4uCAkJATa2toAgAkTJqh13WXLlqncNnLkSDg5OSmUd+7cGUuWLMGCBQuwdetWLF68WNiWmpqKZcuWwdLSEi4uLkI872vevDn69OkDQ0NDGBoawsjICMbGxnjx4gW2bNmC169fY+fOnWjcuLFa90H0JWGChIiIiIiINFZwcDDi4+OxdetWZGZmIikpCe/evcPw4cOFfcaPH6/02JycHPzzzz8YMGCAXHnv3r0xZMiQYsWT/7oAIBaL4enpKVfWvHlzWFhYwMPDQygLDw9HamoqunfvDl9fX7n9Bw8eDGNjYwBAjRo1MGbMGGGbRCKBt7c3Nm3aBEtLSyxbtkwhOfLgwQO4ublhyJAhaNu2bbHui6gsYIKEiIiIiIg0Um5uLrZt24b27dujdevW8PT0xMaNG7F06VJERUXh4sWLcHJykhsOY2trKxx/5swZpKeno2/fvnLnrVixIr766quPEmNOTg62bt2qUH716lWl+wcFBSmU9e7dW0iQ5BcZGQk3Nzc8efIEkyZNgqOjo1zPE7FYDC8vL7i7u8PY2BgZGRkfcCdEpR8TJEREREREpJEOHz6M+/fvY9y4cbhz5w727t2LBg0aqDW5KQD4+vqiRYsWqF27tlA2a9asDxqeMn36dDRt2lT43tDQEFFRUSr3t7W1RdeuXeHq6qrW+SUSCUJDQ3HkyBFcunQJnTt3xtSpUyESiXD27FlhktZXr17h7NmzuH//Pvr374/JkyfDxMSk2PdFVBYwQUJERERERBpJNsfInDlzoKWlBalUirVr10IkEiEtLU3oMfH69WukpaXJ9a6Ij4/HlStX5OYSiYiIQFZWFq5cuYIrV64UO64rV66gefPmhe4nlUqLfG6RSIRt27YhLi4OQF4vmJCQEJiYmMDMzAzZ2dlISUkBkJd88fLyQqNGjYp8HaKyiAkSIiIiIiLSSKNHj8awYcMgkUgwYMAAdOvWDc2bN0dmZia6dOki7PfTTz8BgFxPkZs3bwKAkEwAgNDQUBw8ePCjxDZy5MhC95ElSEQiUZHOvWTJErx58waVK1eGmZkZTExMkJqaip07d8Lf3x8NGzbEuHHj0KlTJ5w/fx7Xr19XuXoP0ZeECRIiIiIiItJIspVcFi9eDH19fUyZMkUoDw4ORnh4OObNm4eDBw/C3Nwc2tra6Ny5MwCgT58+iI+Px8aNG1GnTh106tQJM2bMwIwZMwq85qJFixAYGFjgsBmZly9fIjg4WOV2iUQCAEhKSlKYmPV9HTp0EJYFzt8jJCUlBe7u7vD390eNGjWwbNkydOnSBVpaWgCAqKgo7N27F7GxsZgzZw709PQKjZuorGKChIiIiIiINFZYWBgCAgLg5uaG8uXLC+VmZmYoV64cAKBSpUowMzNTONbJyQkxMTFYvXo1OnToINeT4+TJkwgMDMTMmTPlep4URXJyMpydnQvdLzY2FrGxsQXuY2lpKSRIAOD69es4cuQITpw4gaZNm8LFxQUdOnQQhhplZ2cjMzMTgwYNwtu3b+Ht7Y27d+9i7dq1qFSpUrHuh6i0Y4KEiIiIiIg0UkpKChYuXIgKFSogODgYnp6eKF++PDZs2AAAyM7OBgAYGBgoPV4kEmHs2LGYMGECoqOj0bJlS2HbjRs3cOnSJRgZGam8tjK6urqoWLEigLyeHgX1IPHy8sLu3bshEong4eFRYCJGtorNmzdv8P333yM1NVW4t/T0dKxatQpLly5FdnY2srKylM5vEhsbi+HDh2P9+vVo0KCBymsRlVVMkBARERERkUbKzMyErq4urKysYGJigl69eqFZs2ZyS/kCecNTAAjDa/KzsbEBANy5c0chQVK1alVUrlxZ6bV79+6ttLxJkybw8vICAGhrayvtuQLkLf/7zz//oEaNGkhPT8eOHTuwadOmgm8YeYmSVq1a4dmzZ6hcuTLKly8PY2NjmJiYwMjICOfPn8f58+exbds2GBoawsjICAYGBjAwMMCtW7cwbdo0TJ8+HUeOHIGODj9O0peFv9FERERERKSR6tSpgxMnTiiU+/n5AQD27duH0NBQ7NixA0De3CQhISFy+4rFYrn/A3m9NK5du6Y0oSKzYsUKpeWmpqZqxe7h4YHHjx9j/vz5yMrKwpo1a+Dp6anW5K6ya8tW3GnXrp2w7cmTJzh//jxatWoFIC/RI5FIYGFhgdatW2Pt2rUwNjZmcoS+SPytJiIiIiIi+v/S09Ohq6uL6tWrIykpCbVq1YKVlZXcPnFxcfD19UWVKlVw/vx5AED9+vWF7UFBQRCLxbhw4QKePHmCqlWrKlynR48exY7x5MmT2LVrF6ytrdG/f38AwNmzZ7Fp0ybo6+tj8ODBhZ4jMzMTU6ZMQXR0NHbs2IH//e9/CvtIJBIsXLgQT548wZw5c/Ddd9+hdevWxY6bqLRjgoSIiIiIiDTSzZs3ERsbi4SEBCQkJODevXtISUnB2LFjMXDgQERHR2Po0KEKx717905u8tTu3bujbdu2APJ6kuzduxc1atRAVlYWZs2aha1bt6qci6So9u3bhw0bNsDCwgKurq7CxLCrVq3C6NGjsWrVKsTFxWH69OkwNDRUeo60tDQ4OTnh5s2bmDp1qtLkCJA3x8qGDRswbdo0LF68GFevXsWcOXOgq6v7Ue6FqLRhgoSIiIiIiDTSqVOnsGfPHujp6aFJkyawt7fHV199hTZt2sDT0xO5ubmwt7dXOK5x48YYNmwYMjMzUblyZbkeIrt378ajR4/w559/okqVKnBycsKIESMwd+5chblNiiIhIQGurq6IiIhAvXr1sH79epibmwvbTU1N4eHhgd9//x1Hjx7FxYsXMXbsWPTu3Vtuad6EhARMnjwZT548weLFi9GnTx+567w/OWv16tXh6emJhQsX4ujRo7h79y7c3NxUzq1CVJYxQUJERERERBqpf//+6NSpE5o0aSKXRIiJicHBgwfx1Vdf4euvv1Y4TiQSoW7dugrlISEhcHd3h42NDXr37g0tLS1s2LABCxYswJgxY1CjRg28e/cOALBhwwZoa2tDS0sLQN5wltzcXLx79w45OTkYMGAAGjdujFu3bmH//v04efIkpFIpBg4ciGnTpildWcfU1BTbt2/Hjh074OnpiaVLl2Lz5s3o1asXvv/+ezx48AB//PEHtLW1sXnzZrRq1Qo5OTmIiIhAhQoVoKWlhYiICIXeLoaGhli1ahXWr18PLy8vDBs2DAcPHkSFChU+6PkTlTZMkBARERERkUaqVasWatWqJVeWmpqKGTNmQCKRYOrUqUU6386dO2Fqaorly5cLiY9vvvkGf/31F44dO4Zz584hISEBJiYmOHjwIMRiMSQSicJ5RCIRJk2ahIsXL8LJyQkAYGtrCycnJ6UJm/x0dHQwfvx4ODg4YPv27QgKCsK///6L4cOHo1y5cqhatSpWr14t3LeOjg5mzpyJnJwc4RzKJnoViUSYNm0aatasieTkZCZH6IukJVW2wDURERFRAWTdxKOioko4EvWUtXiJqGCf+t/08ePHce/ePSE5kZ+dnR1mzJghTI6a37Vr16Cnp4dGjRqpfS2pVAqJRCIMbRGJRMK8IgDg6+uLhg0bwtrauhh3AqSkpEAsFqN69eoA8nqq5D8/AFy5cgWZmZmQSqWoWrWq3ISz9OHKWh1U1uL9mNiDhIiIiIiIKB8HBweV22Sr1ihTWO8OZbS0tKCtra1y+6BBg4p8zvwsLCzkvn8/OQIANjY2H3QNoi+F4r8OIiIiIiIiIiINwwQJEREREREREWk8JkiIiIiIiIiISOMxQUJEREREREREGo8JEiIiIiIiIiLSeEyQEBEREREREZHGY4KEiIiIiIiIiDQeEyREREREREREpPGYICEiIiIiIiIijccECRERERERERFpPCZIiIiIiIiIiEjjMUFCRERERERERBqPCRIiIiIiIiIi0nhMkBARERERERGRxmOChIiIiIiIiIg0HhMkRERERERERKTxmCAhIiIiIiIiIo3HBAkRERERERERaTwmSIiIiIiIiIhI4zFBQkREREREREQajwkSIiIiIiIiItJ4TJAQERERERERkcZjgoSIiIiIiIiINB4TJERERERERESk8XRKOgAiIiIiIiJVUlJSsHPnTqXbVqxYIff9r7/+CgsLi88RFhF9gZggISIiIiKiUqtKlSr4999/kZqaqrDNz89P+LpixYqYM2fO5wyNiL4wHGJDRERERESllkgkgr29faH72dvbQyTixxsiKj7+BSEiIiIiolJNnQRJly5dPkMkRPQlY4KEiIiIiIhKNVtbW5QvX17ldlNTU9ja2n7GiIjoS8QECRERERERlWo6Ojro3Lmzyu2dO3eGtrb25wuIiL5ITJAQEREREVGpV9AQGg6vIaKPgQkSIiIiIiIq9Vq3bg0jIyOFciMjI7Rq1aoEIiKiLw0TJEREREREVOrp6emhQ4cOCuUdO3aEnp5eCURERF8aJkiIiIiIiKhMUDaUhsNriOhjYYKEiIiIiIjKhHbt2kFfX1/4Xl9fH23bti3BiIjoS8IECRERERERlQn6+vpo37698L2dnZ1c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69fL29s703M6deqkkydP2jxMgPPOnj2rsLAw7dmzRxcvXpTRaFShQoVUq1YtderUSVWrVs3pJj5UD7tfYebovjVt2jRNmzbNYfvunSaxceNGLVq0yOa4UqVK2QQkUuaj1pwdweLj42M3IEmP+yxyGgFJLnLmzBl9+OGHOnXqlHx8fFSjRg01bNhQJpNJ58+f14EDB1SjRg0CEmRq2bJlj2yIdr9+/RQbG6uoqKgca8O9xo4dqzNnzui7776Tt7e3ihcvrnnz5undd99VaGioypcvr6CgIIWGhmro0KEaMGCA5s6dq/z581td59y5c+rfv79MJpOmT5+uSpUqSZKCg4O1Zs0aq2OTk5MVEhKiIUOGKDg42LK9Q4cO6t+/v1q2bClJOnbsmD788EO77c7od/vefeXLl9cnn3yi999/X/nz59eTTz5ptX/kyJFav359xt+o//9eHFmwYIGeeeYZy9deXl7auXOnzXETJ07UkiVLHM5jddTh+/bbb+Xn56ejR4+qW7duVvumTJmi559/3uacv/76S82bN7f5tzKZTBo9erTOnz8vSeratateeeUVu6+bmpqqL7/8UtHR0WrSpInVPj8/P3366afq06ePPvvsM4dBGICcdePGDYWHh+v111/P8Lhdu3Y90Og3SIsWLdK0adNkNBpVvnx5NW/eXO7u7jpz5ozWr1+v9evXq0+fPurfv39ON/Whedj9ivRCQkIyHDWa3rJly+xO3zEz35eTk5PVrFkzh6NVMuuvpb+/b9++XYMGDdLYsWP10ksv2T2+Vq1a6tu3r/r162ezj/sschoBSS5x+vRpvfXWW7p165Z69+6tXr162cxfvnXrluLi4nKohchN7h3N8TDt27fPZujoo25Detu2bdOGDRv05ptvWnUEChYsqK+++kpbtmxRUFCQJKlRo0YaPHiwduzYIaPRaHOt48eP686dO5o8ebLlHCmttoCPj4/Vag+3b9+WJBUuXNimUFiBAgUs2/7880+Hbb83dJGkefPmae3atTb7jh07pgEDBsjX11ezZs1yuPzng3RYixYtet/nPixnzpyRJKv3azKZ9OmnnyoyMlJTpkxRdHS0Fi9erPLly6tdu3ZW59+6dUtjxoxRdHS06tevb/epWPXq1dWmTRutWbNGrVu3dnokysN06dIlFS9ePKebATwWAgICdPPmTS1evFiv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" alt="" />

详细介绍如下所示:

1)、Server,又称为Broker,接受客户端的连接,实现AMQP实体服务。
2)、Connection,连接,应用程序与Broker的网络连接。
3)、Channel,网络信道,几乎所有的操作都在Channel中进行,Channel是进行消息读写的通道。客户端可建立多个Channel,每个Channel代表一个会话任务。
4)、Message,消息,服务器和应用程序之间传送的数据,由Properties和Body组成。Propertie可以对消息进行修饰,比如消息的优先级,延迟等高级特性,Body则就是消息体内容。
5)、Virtual Host,虚拟地址,用于进行逻辑隔离,最上层的消息路由。一个Virtual Host里面可以有若干个Exchange和Queue,同一个Virtual Host里面不能有相同名称的Exchange或者Queue。
6)、Exchange,交换机,接受消息,根据路由键转发消息到绑定的队列。
7)、Binding,Exchange和Queue之间的虚拟连接,binding中可以包含routing key。
8)、Routing key,一个路由规则,虚拟机可以用它来确定如何路由一个特定消息。
9)、Queue,也称为Message Queue,消息队列,保存消息并将它们转发给消费者。

6、RabbitMQ的架构设计如下所示:
aaarticlea/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAABGkAAAOyCAYAAADASojJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAgAElEQVR4nOzdf3zP9f7/8ft7v8x+sCQ/zog4+ZFz8tW043dCKz/KjxykcvwIoSEOcnQqp1OaUgdJEjmRGCIJZwjlxyZbJdJkO+1oRytGzGbbe+/39w+fvY9329jv13Pb7Xq5dGlePx97834+38/7+/V6vmxOp9MpAAAAAAAAWMrD6gIAAAAAAABASAMAAAAAAGAEQhoAAAAAAAADENIAAAAAAAAYgJAGAAAAAADAAIQ0AAAAAAAABiCkAQAAAAAAMAAhDQAAAAAAgAEIaQAAAAAAAAxASAMAAAAAAGAAQhoAAAAAAAADENIAAAAAAAAYgJAGAAAAAADAAIQ0AAAAAAAABiCkAQAAAAAAMAAhDQAAAAAAgAEIaQAAAAAAAAxASAMAAAAAAGAAQhoAAAAAAAADENIAAAAAAAAYgJAGAAAAAADAAIQ0AAAAAAAABiCkAQAAAAAAMAAhDQAAAAAAgAEIaQAAAAAAAAxASAMAAAAAAGAAQhoAAAAAAAADENIAAAAAAAAYgJAGAAAAAADAAIQ0AAAAAAAABiCkAQAAAAAAMAAhDQAAAAAAgAEIaQAAAAAAAAxASAMAAAAAAGAAQhoAAAAAAAADENIAAAAAAAAYgJAGAAAAAADAAIQ0AAAAAAAABiCkAQAAAAAAMAAhDQAAAAAAgAEIaQAAAAAAAAxASAMAAAAAAGAAQhoAAAAAAAADENIAAAAAAAAYgJAGAAAAAADAAIQ0AAAAAAAABiCkAQAAAAAAMAAhDQAAAAAAgAEIaQAAAAAAAAxASAMAAAAAAGAAQhoAAAAAAAADENIAAAAAAAAYgJAGAAAAAADAAIQ0AAAAAAAABiCkAQAAAAAAMAAhDQAAAAAAgAEIaQAAAAAAAAxASAMAAAAAAGAAQhoAAAAAAAADENIAAAAAAAAYgJAGAAAAAADAAIQ0AAAAAAAABiCkAQAAAAAAMAAhDQAAAAAAgAEIaQAAAAAAAAxASAMAAAAAAGAAQhoAAAAAAAADENIAAAAAAAAYgJAGAAAAAADAAIQ0AAAAAAAABiCkAQAAAAAAMAAhDQAAAAAAgAEIaQAAAAAAAAxASAMAAAAAAGAAQhoAAAAAAAADENIAAAAAAAAYgJAGAAAAAADAAIQ0AAAAAAAABiCkAQAAAAAAMAAhDQAAAAAAgAEIaQAAAAAAAAxASAMAAAAAAGAAQhoAAAAAAAADENIAAAAAAAAYgJAGAAAAAADAAIQ0AAAAAAAABiCkAQAAAAAAMAAhDQAAAAAAgAEIaQAAAAAAAAxASAMAAAAAAGAAQhoAAAAAAAADENIAAAAAAAAYgJAGAAAAAADAAIQ0AAAAAAAABiCkAQAAAAAAMAAhDQAAAAAAgAEIaQAAAAAAAAxASAMAAAAAAGAAQhoAAAAAAAADENIAAAAAAAAYgJAGAAAAAADAAIQ0AAAAAAAABiCkAQAAAAAAMAAhDQAAAAAAgAEIaQAAAAAAAAxASAMAAAAAAGAAQhoAAAAAAAADENIAAAAAAAAYgJAGAAAAAADAAIQ0AAAAAAAABiCkAQAAAAAAMAAhDQAAAAAAgAEIaQAAAAAAAAxASAMAAAAAAGAAQhoAAAAAAAADENIAAAAAAAAYgJAGAAAAAADAAIQ0AAAAAAAABiCkAQAAAAAAMAAhDQAAAAAAgAEIaQAAAAAAAAxASAMAAAAAAGAAQhoAAAAAAAADENIAAAAAAAAYgJAGAAAAAADAAIQ0AAAAAAAABiCkAQAAAAAAMAAhDQAAAAAAgAEIaQAAAAAAAAxASAMAAAAAAGAAQhoAAAAAAAADENIAAAAAAAAYgJAGAAAAAADAAIQ0AAAAAAAABiCkAQAAAAAAMAAhDQAAAAAAgAEIaQAAAAAAAAxASAMAAAAAAGAAQhoAAAAAAAADENIAAAAAAAAYgJAGAAAAAADAAIQ0AAAAAAAABiCkAQAAAAAAMAAhDQAAAAAAgAEIaQAAAAAAAAxASAMAAAAAAGAAQhoAAAAAAAADENIAAAAAAAAYgJAGAAAAAADAAIQ0AAAAAAAABiCkAQAAAAAAMAAhDQAAAAAAgAEIaQAAAAAAAAxASAMAAAAAAGAAQhoAAAAAAAADENIAAAAAAAAYgJAGAAAAAADAAIQ0AAAAAAAABiCkAQAAAAAAMAAhDQAAAAAAgAEIaQAAAAAAAAxASAMAAAAAAGAAQhoAAAAAAAADENIAAAAAAAAYgJAGAAAAAADAAIQ0AAAAAAAABiCkAQAAAAAAMAAhDQAAAAAAgAEIaQAAAAAAAAxASAMAAAAAAGAAQhoAAAAAAAADENIAAAAAAAAYgJAG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9u3btXbtWp04cUI2m00333yzJk6cqHbt2rkdryjjjatreOedd7R582alpKTo5ptv1rhx49StWzedP39eCxcu1J49e3Tp0iXdfPPNGjlypO67774852FMAkIauGRkZCg7O7vAie5eeuklxcbGKiwsTKdPn3Zbt3btWr3yyiuSpDvvvFOdOnXSmTNnFB0drZiYGA0fPlzh4eFu+/zjH//QypUrVb16dXXu3Fl+fn6uwVNOTk6p/E4ffvih/v73v8vpdKpt27Zq2LChUlJStHfvXrftNm3apBdeeEE+Pj7q1KmTAgIC9NVXX2np0qU6dOiQlixZIm9v7yK9JkBldOnSJW3fvl3bt2+Xr6+vOnbsqG7duqlz587y9/e3urxC+cMf/qCePXtq27ZtWr16tYYPHy5JOn36tFauXKng4GA98cQTru0L247k+tvf/qbDhw+rXbt2+vHHHxUdHa05c+YoMDBQ9957r2u78ePHKyMjQ23atNGdd96ps2fPat++fXryySe1cOFCdejQId9jx8bGql27djp9+rRiYmL07LPPKiAgwO3D67x587R69Wr5+fm52tfo6GhNmDChwPa1uO0gykdleO8BKDumtBFRUVGSpD/+8Y9F3rc444lchekfV6xYoYULF6pmzZrq0aOHJOmrr77St99+6wppSuKZZ57R8ePHFRoaqqSkJMXFxWn69Ol65ZVXtHDhQmVnZ6tr166u+mbNmqXAwEB17NjRdQzGJJAIaXCV3Eb1D3/4Q551mZmZSkxM1Lp161S9enW3dV9//bVeeeUVBQQEaNGiRbrttttc606dOqUxY8ZoxYoVCg0NdR378OHDWrlyperUqaO3335bwcHBkqTLly9rypQp+u6770r8+3z33Xd68cUX5evrq/nz5+uOO+5wrbu68YqPj9eLL76oBg0aaPHixapXr56kKzPSz549W1u2bNG6des0dOjQQr8mVrjeU21Q9qra38Hly5e1a9cu7dq1S5Jc3+BZLTs7O98rXDp16uT6IDRlyhTt379f77zzjvr376+aNWvqH//4h7KysvTMM8+4voEsbDuSKyMjQz/88IM2bNjgOkbu1Tnr1q1zC2keeughDRo0yO2Jehs2bNCLL76oVatW5QlpMjIy9N///lcbNmxwfZO2aNEiLV++XGvWrHF9CP3888+1evVq1a1bV8uWLVP9+vUl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KVPk7++vrVu36pNPPlGdOnU0ePBg18CkJH7dvm7btk316tXTo48+quHDhysqKirfATztYMW0dOlSJScnuy27ePGibrzxRosqAkrO19dXkydP1lNPPaU33nhD99xzT4GTocNMjzzyiLp27aq1a9cqJiZGBw4c0OXLl+Xn56cGDRpoyJAheZ6cWNTxRFE99NBD+vTTT7Vlyxb5+PioWbNmmjx5slsdxRlvlCb6YkiSzVlRJg+oZEx/xB8qDv4tWa8q/R04HA7NmzfP7TLgq915552uq0uqwutR0aSmpuqee+5RcHCwNm/ebHU511WV3lvFceLECT388MN5biVYv369brnlllI9V3n+XZTHuSrb71Me57Hi+GPHjtXhw4c1aNCgIj3wojRrqEwq+++H8sO/pbLFnDQAgELJycnR7NmzCwxoJKl58+blWBGK6pNPPpEk3X777RZXgpJyOBz6+9//nu9cD1ZfzQaUlunTp8vT01MbNmzQiRMnrC4HAMoFIQ0A4LqysrI0bdq0696KU9JLkVFyycnJOnDgQJ6nbB09elSLFi2SzWZzTYiMiisyMtJtkuurpaWllXM1QNlo2rSp/vjHPyonJ6fAB0sAQGXDnDQAgGvKycnR5MmT8zwVIT+ENNZLTU1VeHi46tWrp9tvv12+vr5KSkrSkSNH5HQ6NW7cOP2///f/rC4TJZCSkqJFixYVuJ4raVCZPP7444qKilJcXJy2b9+eZx4TAKhsuJIGAHBNnp6emjRpku68885rbufr66tGjRqVU1UoSOPGjfXoo48qICBAn376qbZu3ark5GTdddddeuONN/TYY49ZXSJKaO7cuUpPTy9wPSENKpPAwEBNmDBB0pWnBV3r3z4AVAZcSQMAuK7mzZtr8eLFOnDggF5++WWdOnUqzzbNmjWThwfZv9UCAwM1efJkTZ482epSUAZ2796tPXv2XHObixcvlk8xQDnp27evPvjgAx07dkzLli1TeHi41SUBQJnh0zQAoFBsNps6duyoBg0aSJKqV6/utp5Jg4GylZaWpoiIiOtux5U0qGxsNpumT58uDw8PrV69Wv/5z3+sLgkAygwhDQCg0KKjo3Xw4EHVqFFDH3zwgR5//HHXOuajAcrWL7/8ovvuu09NmjS55naENKiMfve736lPnz7KysrSvHnzrC4HAMoMIQ0AoFAcDofmz58v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n164RDMrK0tvv/22Dhw4cNv9BWfRNGvWjH00AIx55JFHNG3aNEVGRt7wzMBdu3aVcBWAO8V3FADwf+Tk5GjixImSpIEDBxb+4AegaOXl5Wnx4sVavHixVq1apZSUFGVkZGjdunXavXv3LR9n2LBhV/13+vLLL0u6cop/gSVLlkiSIiIirrrLSenSpTVy5Mg76ufW2wCcRf369TV79uwb7s9jLw3gOjiTBgD+jwULFujUqVOqW7euOnToYDoHcFu+vr764YcfJF05Hf/s2bPatGmTJk6cqL59+2ry5Mlq2rTpHx7D29tbdevWveqxSpUqycfHR5cvXy58LDExUZL06KOPXnOMqlWrymazKScn57b62UcDwJmEhIRo1qxZGjp0aOHXvAImhjR2u13r1q3TunXrtHfvXqWmpspisahcuXKqWbOmevXqpRYtWpR4F+DsOJMGAH7n4sWLmjVrliwWi6KioriEASghXl5eCg4O1ksvvaQPPvhAubm5mjRp0k3f5+PjI4vFcs3j3t7ecjgchX9OTU2VzWZT2bJlb/j5t+PYsWNKSUlR+fLlVbNmzdt6LwAUl8DAQE2ePFlPPPHEVY+fO3euRDsOHTqkV155Re+99562bt2qmjVr6vnnn1eHDh10//33KyEhQTt27CjRJsBVcCYNAPzOtGnTdPnyZbVu3VotW7Y0nQN4pILLhw4ePFhkxyxVqpQyMzOVk5Mjm8121XP5+fm3feeTgrNowsLCrjskAgBTSpUqpejoaI0ePVqLFi0qfNzhcJTI16vk5GT17dtXaWlp6t27t9544w35+fld9Zq0tDSlpKQUewvgivgVMQD8j2PHjunzzz+X1WpVVFSU6RzAY50+fVqSivSuatWrV5fD4bjub27j4+Nlt9tv63hc6gTAmVmtVr377ruKjIwsfKwkBjS5ubkaPny4Ll26pL/+9a8aNGjQNQMaSfL39+csxGJyJ3crhHPhTBoA+B8TJkxQbm6uXnjhBdWqVct0DuCRMjIyFB0dLUlq3759kR23ffv22rt3r8aOHatPPvlEAQEBkqTz58/ro48+uu3jMaQB4OwsFot69uypy5cva9asWSXymWvWrNGRI0fUtm1bPf/887f9/j179uizzz7Tjh07lJqaKj8/P9WvX1/dunUrvFvf74WFhcnX11ffffedZs6cqeXLl+vs2bMKCQlR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vePPvVUFl91/+OGHSklJueo5h8OhH374QadPny72DpjH5U4APNKkSZOUnZ2tZ5555pplbgBwPQcOHNClS5d03333KSQkxHQOAFwjJSVFkZGROnjw4FWPV61aVb/++muJNLz22muSpHHjxum//uu/NG7cODVu3FjlypVTRkaGkpOTtX//fr355puFZ9C0atVK/fv319SpUxUeHq4WLVqocuXKOnfunH766Sfl5+frr3/9q2rWrHnHXQMHDlStWrUUGhoqh8Ohn376SXa7vbBXujIs2rJli2bNmqXdu3erSpUqSkhIULVq1eTr66vMzMy7+4fzB9q3b6/Nmzdr5cqV6ty5s1q0aKHg4GClpaXp559/1qlTp7R48WJVqlSp2BrgHBjSAPA4SUlJWrNmjWw2mwYNGmQ6B4CLKLj1Npc6AXBGSUlJioqK0pkzZ655rkmTJiU2pJGuDGratm2rRYsWKS4uTj/++KOysrJOLYSrAAAgAElEQVTk5+enKlWqqEePHnrmmWeuek+/fv3UqFEjzZ8/X7t27dLWrVtVvnx5PfHEE3r99ddva8fN9bzyyiv6/vvvtXLlStlsNtWpU0dDhgy5quORRx7Rhx9+qBkzZmjnzp06dOiQnn76aQ0ePPiGd54qSv/93/+thx56SF988YUSEhKUnZ2twMBA1a9fX5GRkapRo0axN8A8i+P3K6UBwAMMGDBAW7du1Z///OciudSp4LKHgssgALinIUOGaNOmTfrHP/6hjh07ms4BUMRc+f/nmzdv1siRI5WRkXHd5//rv/5L77//viTX/PuDc3Hl/1ZcATtpAHiUzZs3a+vWrQoMDFSfPn1M5wBwEXa7XTt27JDFYuFMGgBOZdmyZRoyZMgNBzTSlTNpALgGLncC4DHsdnvh4rc+ffqobNmyhosAuIp9+/YpLS1N999/v4KDg03nAIDsdrsmTpyo2bNn/+HrAgMDVa1atZKJAnDXOJMGgMf48ssvlZycrCpVqqhbt26mcwC4EG69DcDZJCQkaMGCBTd9XePGjUvk9tsAigZDGgAeITMzU1OmTJEkDR48WD4+PoaLALgShjQAnM1DDz2kZcuW3XShLZc6Aa6FIQ0AjzB37lydPXtWDRs2VLt27UznAHAheXl52rlzJ/toADide++9V9HR0YqJibnhL6AY0gCuhSENALd37tw5zZ07VxaL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x/Lz89N7772nzp07O72enJys8PBwff755/L19dWgQYPcVKnxTJ8+XWfPntX48eMLHJdLly7p4sWLTsv27dun6tWrV2SJAIByRkgDACgXZrNZzz77rLvLQBGu/3fKy8vT0aNHtWnTJm3btk2fffaZW2454ep/5ZWenq4PP/xQnp6eioiIUMuWLQusc99992nevHkKDg7WrFmz1KNHD9WrV88N1RpPfHy8zGazBgwYUOC1WrVqqVatWhVeU35+vqpVq1bh+wWAqoKQBgBQLjw9PRUeHu7uMlAEV/9Os2fP1sKFCzVr1iz985//rPCauPpfeX399dfKzs7W888/7zKgsatTp4769++vzz77TNHR0Ro7dqzjtZvd0hgUFKSsrCyXo/WOHDmiyMhI7d+/X1evXlW9evXUs2dPhYaGysvLq8K2L0kbNmxQVFSUjh8/LpPJpEaNGmnMmDHq2LFjocdEkkwmk/Ly8nT+/Hn5+/sXut71o+SysrIcP99Yd1JSkpYuXar9+/crPT1dPj4+atWqlYKDg9W9e3eX261evbo2bdqkadOm6dtvv1VmZmaB7ZbkWAAAbo6nOwEAUMW99NJLMplMOnLkiLtLQSWza9cuSVKvXr2KXPfhhx+WJO3Zs6fM+125cqVCQ0MVHx+vwMBA9erVSx4eHvrss880YsQI5ebmVtj2Fy1apDfeeEMpKSl65JFH1KNHD2VmZurHH38scj/24GTs2LE6duxYoesFBwcrODhY0rXRctf/xZag5gAAIABJREFUbBcVFaWQkBBt2rRJTZs21dNPP60//vGP2r9/vyZOnKhZs2YVuv2pU6dq37596tmzpzp06FDqYwEAKBojaQAAFSI+Pl4jR45U3bp1FRsbK4vF4nht7ty5+vzzz9W/f3+98sorjuVHjx7VF198ocTERF28eFG+vr5q166dpk2bVmD7+fn5WrhwoWJjY5WWlqZ69epp0KBB6tu3r9N6ycnJio6O1r59+5Samiqz2awWLVooJCRE3bp1c1rXfhV569atioyM1MqVK5WWliZ/f3+FhYXpqaeeKlDHmjVrFB0drVOnTsnLy0tdu3bV+PHj9ec//9mtV+RvxsvLSx4eHnL1LIGSXHkv6YiE4l795yr97eunn36SJLVo0aLIdZs2bSpJOnv2bJn2mZycrMmTJ6tBgwaaO3eu6tatK0myWq16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xx57TC+//HKhT4mSrl39f+ONN3TixIkCT8AqyfHB7cPT01PTpk3T1KlT9fXXX+v555/XsGHD1LlzZ/n5+Sk1NVX+/v7uLhNAMdHXKIi+BkqLkTRVQHZ2tnr27Km77rpLubm5SktL0zfffFPoE0gqys2u6FaF/QOoOtLT0/Xoo4/K39+/wFOUgKpu5cqVmjlzptNtgpJcjroCYDz0NYy5f9y+GElTBWzevFkZGRnq06ePcnJyFBUVpfXr16tfv37uLg0AqoQtW7ZIujapJwBnvXv3Vs+ePbV9+3YlJycrJydHd911l7vLAlBM9DWA8kVIUwXYhx/26tVLubm5ioqK0qpVqwptOO2p7w8//KCoqChFR0fr559/1h133KHu3btr1KhRBZLx0rznZvu+MXE+evSovvjiCyUmJurixYvy9fVVu3btNG3aNMc6ycnJio6O1r59+5Samiqz2awWLVooJCRE3bp1c9qHXVZWluNn+xW7wmpISkrS0qVLtX//fqWnp8vHx0etWrVScHCwunfvXujvsnXrVkVGRmrlypVKS0uTv7+/wsLCCkzQt2HDBkVFRen48eMymUxq1KiRxowZU+ApMQCM6ezZs0pJSVGnTp1kMpkcy48cOaKIiAiZTCbHhMgAnPn4+Khnz56OCbgB3D7oa9DXQPkipKnkzp49q8TERDVv3lwtWrSQJDVu3FjJyclKTk7WfffdV+h7p0+frjVr1qhz585q06aN4uPjtWLFCh06dEj/+te/XM6tUJr3FGXVqlV6//33ZbPZ1K5dOzVs2FCpqanaunWr03ojR45UVlaW2rZtq/bt2+vChQvavn27xo8fr1mzZqlz586SpODgYElSdHT0TSc6vV5UVJSmT58u6dpkmEFBQUpLS9Pu3bsVHx+vkJAQjR492uV7//73vzseyXv+/HnFx8fr7bffVs2aNR0N7qJFizRr1izVqlXL8bjhgwcP6scff6ThBG4T6enpGj16tOrWras2bdrI29tbKSkpOnTokGw2m0aMGKE//vGP7i4TAIByQ1+DvgbKHyFNJbdq1SrZbDb16tXLsaxXr16aO3euVq1apUmTJrl839WrVxUfH6+vv/5ad999t6RrSfCoUaN08OBBffnll3rxxRfL/J6inDhxQpMnT5a3t7dmzpypP/3pT47Xzp8/77Ru//79FRwc7JSix8TEaPLk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OjraaaJAqWKZ0sTERJ07d0716tVTRESEpk+frsGDB1f5vdTW9QYAAMC9tX37dv39739Xr169NHjwYI/397SfYHvu37dvn+Lj47Vp0yZdvnxZgYGBGjt2rNME2Hd6vq1JP6JyG/7yl79oy5Ytunjxolq1aqVJkybpueee07Vr17RkyRJ9/fXXunnzplq1aqWxY8dqwIABTsfx5NnX3f5XVeiP0B+pDQRpDKCwsFAlJSX6p3/6J5fb33vvPWVkZKhfv37Kzc112LZmzRotXLhQktStWzeFh4fr8uXLSk1NVVpamqKjoxUbG+uwz4cffqhVq1bJ19dXERER8vPzU1pamiZPnlxrI3U2b96s//iP/5DValXXrl316KOP6uLFi9q3b59DvU2bNundd9+VxWJReHi4GjRooKNHj+qTTz7RoUOHtGLFCnl7e7t93NDQULVr107p6en67rvv9M///M8O2y9duqQvv/xSHTt2VJcuXapcMteTdn322WdasmSJ/P391bdvX0nS0aNHlZWVZb/huVNHkiZPnqzCwkJ16dJF3bp105UrV3TgwAFNnz5dS5YscVi6dNGiRVq9erX8/Pzs32NqaqqmTJlS5fdY29cbAAAA987OnTslSb///e893rcm/QSbd955RxkZGQoNDVVubq7S0tI0d+5cNWjQwB7ccff5tqbmzJmj//3f/7WPTMnMzNTMmTO1cOFCLVmyRCUlJerVq5e9fW+//bYaNmyonj172j+jps++1fW/7oT+CP2Ru2bFLyYoKMjas2dPp/JNmzZZg4KCrLNnz3aq37VrV+vo0aOtBQUFTvsdO3bM2rVrV2uvXr2sJ0+edNj2f//3f9YBAwZYg4KCrKmpqfby9PR0a1BQkHXAgAHWCxcu2MsLCwutkyZNsgYFBVmDgoLcarfVarX27NnTqf6ZM2esISEh1vDwcGtGRobDth9++MH+e1ZWlrVbt27WoUOHWnNzc+3lZWVl1jlz5liDgoKsn3/+ucvj3q5yG7ds2WINCgqyzp0716nexx9/bA0KCrLu2LGjynPztF3PPfectWvXrtZ//OMfDp9z5coVj+pYrVbrJ598Yv3pp58cytatW2cNCgqyTpo0yV526NAha1BQkHXgwIEO17SwsNA6YcIEl99jbV5vAAAA3Ht9+/a1BgUFWW/evOnRfjXpJ1itVvsz5Lhx46y3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DQAAAAAAgAEQpAEAAAAAADAAgjQAAAAAAAAGQJAGAAAAAADAAAjSAAAAAAAAGABBGgAAAAAAAAMgSAMAAAAAAGAABGkAAAAAAAAMgCANAAAAAACAARCkAQAAAAAAMACCNAAAAAAAAAZAkAYAAAAAAMAACNIAAAAAAAAYAEEaAAAAAAAAAyBIAwAAAAAAYAAEaQAAAAAAAAyAIA0AAAAAAIABEKQBAAAAAAAwAII0AAAAAAAABkCQBgAAAAAAwAAI0gAAAAAAABgAQRoAAAAAAAADIEgDAAAAAABgAARpAAAAAAAADIAgDQAAAAAAgAEQpAEAAAAAADAAgjQAAAAAAAAGQJAGAAAAAADAAAjSAAAAAAAAGABBGgAAAAAAAAMgSAMAAAAAAGAABGkAAAAAAAAMgCANAAAAAACAARCkAQAAAAAAMACCNAAAAAAAAAZAkAYAAAAAAMAACNIAAAAAAAAYAEEaAAAAAAAAAyBIAwAAAAAAYAAEaQAAAAAAAAyAIA0AAAAAAIABEKQBAAAAAAAwAII0AAAAAAAABkCQBgAAAAAAwAAI0gAAAAAAABgAQRoAAAAAAAADIEgDAAAAAABgAARpAAAAAAAADIAgDQAAAAAAgAEQpAEAAAAAADAAgjQAAAAAAAAGQJAGAAAAAADAAAjSAAAAAAAAGABBGgAAAAAAAAMgSAMAAAAAAGAABGkAAAAAAAAMgCANAAAAAACAARCkAQAAAAAAMACCNAAAAAAAAAZAkAYAAAAAAMAACNIAAAAAAAAYAEEaAAAAAAAAAyBIAwAAAAAAYAAEaQAAAAAAAAyAIA0AAAAAAIABEKQBAAAAAAAwAII0AAAAAAAABkCQBgAAAAAAwAAI0gAAAAAAABgAQRoAAAAAAAADIEgDAAAAAABgAARpAAAAAAAADIAgDQAAAAAAgAH8P+z2jL5BjanaAAAAAElFTkSuQmCC" alt="" />

7、RabbitMQ的安装。RabbitMQ的官方网址:https://www.rabbitmq.com/

可以选择自己RabbitMQ的版本,以及对应的Erlang的版本。这里使用rabbitmq-server-3.6.5-1.noarch.rpm一键安装方式进行安装RabbitMQ的方式。一定要注意RabbitMQ的版本和Erlang的版本对应哦。点进去Erlang version可以自己对照版本。

搭建RabbitMQ所需包:

a)、erlang-18.3-1.el7.centos.x86_64.rpm这个是erlang语言基础安装包。

b)、rabbitmq-server-3.6.5-1.noarch.rpm这个是rabbitmq服务端安装包。

c)、socat-1.7.3.2-1.1.el7.x86_64.rpm这个是socat密钥。

可以下载安装包,然后进行安装即可:

 wget www.rabbitmq.com/releases/erlang/erlang-18.3-.el7.centos.x86_64.rpm
wget http://repo.iotti.biz/CentOS/7/x86_64/socat-1.7.3.2-5.el7.lux.x86_64.rpm
wget www.rabbitmq.com/releases/rabbitmq-server/v3.6.5/rabbitmq-server-3.6.-.noarch.rpm

首先安装Erlang的语言基础安装包,安装过程如下所示:

 [root@slaver4 package]# ls
erlang-18.3-1.el7.centos.x86_64.rpm haproxy-1.6.5.tar.gz keepalived-1.2.18.tar.gz rabbitmq_delayed_message_exchange-0.0.1.ez rabbitmq-server-3.6.5-1.noarch.rpm socat-1.7.3.2-1.1.el7.x86_64.rpm
[root@slaver4 package]# rpm -ivh erlang-18.3-1.el7.centos.x86_64.rpm
Preparing... ################################# [100%]
Updating / installing...
1:erlang-18.3-1.el7.centos ################################# [100%]
[root@slaver4 package]#

开始安装密钥包,如下所示:

 [root@slaver4 package]# rpm -ivh socat-1.7.3.2-1.1.el7.x86_64.rpm
warning: socat-1.7.3.2-1.1.el7.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID 87e360b8: NOKEY
Preparing... ################################# [%]
Updating / installing...
:socat-1.7.3.2-1.1.el7 ################################# [%]
[root@slaver4 package]#

开始安装rabbitmq服务器端,如下所示:

 [root@slaver4 package]# rpm -ivh rabbitmq-server-3.6.-.noarch.rpm
warning: rabbitmq-server-3.6.-.noarch.rpm: Header V4 RSA/SHA1 Signature, key ID 6026dfca: NOKEY
Preparing... ################################# [%]
Updating / installing...
:rabbitmq-server-3.6.- ################################# [%]
[root@slaver4 package]#

8、rpm安装方式已经帮助你配置好了环境这些东西,比解压缩安装好点,因为解压缩安装还需要手动配置环境变量的。接下来,配置一下RabbitMQ。配置如下所示:

 [root@slaver4 package]# cd /usr/lib/rabbitmq/lib/rabbitmq_server-3.6./ebin/
[root@slaver4 ebin]# ls
background_gc.beam rabbit_epmd_monitor.beam rabbit_plugins_main.beam
delegate.beam rabbit_error_logger.beam rabbit_plugins_usage.beam
delegate_sup.beam rabbit_error_logger_file_h.beam rabbit_policies.beam
dtree.beam rabbit_exchange.beam rabbit_policy.beam
file_handle_cache.beam rabbit_exchange_parameters.beam rabbit_prelaunch.beam
file_handle_cache_stats.beam rabbit_exchange_type_direct.beam rabbit_prequeue.beam
gatherer.beam rabbit_exchange_type_fanout.beam rabbit_priority_queue.beam
gm.beam rabbit_exchange_type_headers.beam rabbit_queue_consumers.beam
lqueue.beam rabbit_exchange_type_invalid.beam rabbit_queue_index.beam
mirrored_supervisor_sups.beam rabbit_exchange_type_topic.beam rabbit_queue_location_client_local.beam
mnesia_sync.beam rabbit_file.beam rabbit_queue_location_min_masters.beam
mochinum.beam rabbit_framing.beam rabbit_queue_location_random.beam
pg2_fixed.beam rabbit_guid.beam rabbit_queue_location_validator.beam
pg_local.beam rabbit_hipe.beam rabbit_queue_master_location_misc.beam
rabbit_access_control.beam rabbit_limiter.beam rabbit_recovery_terms.beam
rabbit_alarm.beam rabbit_log.beam rabbit_registry.beam
rabbit_amqqueue_process.beam rabbit_memory_monitor.beam rabbit_resource_monitor_misc.beam
rabbit_amqqueue_sup.beam rabbit_mirror_queue_coordinator.beam rabbit_restartable_sup.beam
rabbit_amqqueue_sup_sup.beam rabbit_mirror_queue_master.beam rabbit_router.beam
rabbit.app rabbit_mirror_queue_misc.beam rabbit_runtime_parameters.beam
rabbit_auth_mechanism_amqplain.beam rabbit_mirror_queue_mode_all.beam rabbit_sasl_report_file_h.beam
rabbit_auth_mechanism_cr_demo.beam rabbit_mirror_queue_mode.beam rabbit_ssl.beam
rabbit_auth_mechanism_plain.beam rabbit_mirror_queue_mode_exactly.beam rabbit_sup.beam
rabbit_autoheal.beam rabbit_mirror_queue_mode_nodes.beam rabbit_table.beam
rabbit.beam rabbit_mirror_queue_slave.beam rabbit_trace.beam
rabbit_binding.beam rabbit_mirror_queue_sync.beam rabbit_upgrade.beam
rabbit_boot_steps.beam rabbit_mnesia.beam rabbit_upgrade_functions.beam
rabbit_channel_sup.beam rabbit_mnesia_rename.beam rabbit_variable_queue.beam
rabbit_channel_sup_sup.beam rabbit_msg_file.beam rabbit_version.beam
rabbit_cli.beam rabbit_msg_store.beam rabbit_vhost.beam
rabbit_client_sup.beam rabbit_msg_store_ets_index.beam rabbit_vm.beam
rabbit_connection_helper_sup.beam rabbit_msg_store_gc.beam supervised_lifecycle.beam
rabbit_connection_sup.beam rabbit_node_monitor.beam tcp_listener.beam
rabbit_control_main.beam rabbit_parameter_validation.beam tcp_listener_sup.beam
rabbit_ctl_usage.beam rabbit_password.beam truncate.beam
rabbit_dead_letter.beam rabbit_password_hashing_md5.beam vm_memory_monitor.beam
rabbit_diagnostics.beam rabbit_password_hashing_sha256.beam worker_pool.beam
rabbit_direct.beam rabbit_password_hashing_sha512.beam worker_pool_sup.beam
rabbit_disk_monitor.beam rabbit_plugins.beam worker_pool_worker.beam
[root@slaver4 ebin]# vim rabbit.app

修改内容如是:{loopback_users, <<"guest">>},修改为{loopback_users, [guest]}。这个是用户的设置。必须修改的。

9、RabbitMQ安装成功以后,就可以进行RabbitMQ的服务启动和停止。

 [root@slaver4 ~]# rabbitmq-server start &
[]
[root@slaver4 ~]#
RabbitMQ 3.6.. Copyright (C) - Pivotal Software, Inc.
## ## Licensed under the MPL. See http://www.rabbitmq.com/
## ##
########## Logs: /var/log/rabbitmq/rabbit@slaver4.log
###### ## /var/log/rabbitmq/rabbit@slaver4-sasl.log
##########
Starting broker...
completed with plugins. [root@slaver4 ~]#

启动完成以后,如何验证启动是否正常呢,使用如下命令可以查看RabbitMQ启动是否正常。可以看到RabbitMQ的进程号,以及协议名称等等。

 [root@slaver4 ~]# lsof -i:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
beam rabbitmq 48u IPv6 0t0 TCP *:amqp (LISTEN)
[root@slaver4 ~]#

如何停止RabbitMQ呢,可以使用如下所示停止方式,如下所示:

 [root@slaver4 ~]# rabbitmqctl stop
Stopping and halting node rabbit@slaver4 ...
Gracefully halting Erlang VM

可以使用[root@slaver4 ~]# rabbitmq-plugins list命令查看默认提供了什么样的插件。

 [root@slaver4 ~]# rabbitmq-plugins list
Configured: E = explicitly enabled; e = implicitly enabled
| Status: * = running on rabbit@slaver4
|/
[ ] amqp_client 3.6.
[ ] cowboy 1.0.
[ ] cowlib 1.0.
[ ] mochiweb 2.13.
[ ] rabbitmq_amqp1_0 3.6.
[ ] rabbitmq_auth_backend_ldap 3.6.
[ ] rabbitmq_auth_mechanism_ssl 3.6.
[ ] rabbitmq_consistent_hash_exchange 3.6.
[ ] rabbitmq_event_exchange 3.6.
[ ] rabbitmq_federation 3.6.
[ ] rabbitmq_federation_management 3.6.
[ ] rabbitmq_jms_topic_exchange 3.6.
[ ] rabbitmq_management 3.6.
[ ] rabbitmq_management_agent 3.6.
[ ] rabbitmq_management_visualiser 3.6.
[ ] rabbitmq_mqtt 3.6.
[ ] rabbitmq_recent_history_exchange 1.2.
[ ] rabbitmq_sharding 0.1.
[ ] rabbitmq_shovel 3.6.
[ ] rabbitmq_shovel_management 3.6.
[ ] rabbitmq_stomp 3.6.
[ ] rabbitmq_top 3.6.
[ ] rabbitmq_tracing 3.6.
[ ] rabbitmq_trust_store 3.6.
[ ] rabbitmq_web_dispatch 3.6.
[ ] rabbitmq_web_stomp 3.6.
[ ] rabbitmq_web_stomp_examples 3.6.
[ ] sockjs 0.3.
[ ] webmachine 1.10.

那么安装RabbitMQ成功以后,如何安装管理台或者管控台的插件呢,如下所示操作:

 [root@slaver4 ~]# rabbitmq-plugins enable rabbitmq_management
The following plugins have been enabled:
mochiweb
webmachine
rabbitmq_web_dispatch
amqp_client
rabbitmq_management_agent
rabbitmq_management Applying plugin configuration to rabbit@slaver4... started plugins.
[root@slaver4 ~]#

安装好管控台插件以后就可以使用浏览器进行验证(管控台的默认端口号是15672,5672是java端通信的端口号,25672是集群进行通信的端口号),访问地址如是:http://192.168.110.133:15672/。账号和密码默认就是guest哟。

10、命令行和管控台的基本操作。

 常用命令如下所示:
# 关闭应用
[root@slaver4 ~]# rabbitmqctl stop_app
# 启动应用
[root@slaver4 ~]# rabbitmqctl start_app
# 节点状态,查看集群节点状态是什么样子的
[root@slaver4 ~]# rabbitmqctl status
# 添加用户
[root@slaver4 ~]# rabbitmqctl add_user username password
# 列出所有用户
[root@slaver4 ~]# rabbitmqctl list_users
# 删除用户
[root@slaver4 ~]# rabbitmqctl delete_user username
# 清除用户权限
[root@slaver4 ~]# rabbitmqctl clear_permissions -p vhostpath username
# 列出用户权限
[root@slaver4 ~]# rabbitmqctl list_user_permissions username
# 修改用户密码
[root@slaver4 ~]# rabbitmqctl change_password username newpassword
# 设置用户权限
[root@slaver4 ~]# rabbitmqctl set_permissions -p vhostpath username ".*" ".*" ".*" RabbitMQ支持对虚拟主机,交换机,队列这些进行操作。常用命令如下所示:
# 创建虚拟主机
[root@slaver4 ~]# rabbitmqctl add_vhost vhostpath
# 列出所有虚拟主机
[root@slaver4 ~]# rabbitmqctl list_vhosts
# 列出虚拟主机上所有权限
[root@slaver4 ~]# rabbitmqctl list_permissions -p vhostpath
# 删除虚拟主机
[root@slaver4 ~]# rabbitmqctl delete_vhosts vhostpath
# 列出所有队列信息
[root@slaver4 ~]# rabbitmqctl list_queues
# 清除队列里的信息
[root@slaver4 ~]# rabbitmqctl -p vhostpath purge_queue blue 命令行和管控台的高级操作。
# 移除所有数据,要在rabbitmqctl stop_app之后使用
[root@slaver4 ~]# rabbitmqctl reset
# 组成集群命令,ram是加入节点的时候可以指定存储模式。
[root@slaver4 ~]# rabbitmqctl join_cluster <clusternode> [--ram]
# 查看集群的状态
[root@slaver4 ~]# rabbitmqctl cluster_status
# 修改集群节点的存储形式
[root@slaver4 ~]# rabbitmqctl change_cluster_node_type disc | ram
# 忘记节点(摘除节点)
[root@slaver4 ~]# rabbitmqctl forget_cluster_node [--offline]
# 修改节点名称
[root@slaver4 ~]# rabbitmqctl rename_cluster_node oladnode1 newnode1 [oldnode2] [newnode2...]

命令行可以操作的命令,在管控台也可以进行响应的操作,下面是管控台的菜单栏介绍:

11、RabbitMQ的消息生产和消费。生产者Producer发送一条消息,将消息投递到Rabbitmq的集群中即Broker中。消费端进行监听,监听Rabbitmq队列,获取到数据进行消费。
  1)、ConnectionFactory,获取连接工厂,需要配置相关信息ip地址、端口号port,虚拟主机vhost。
  2)、Connection,通过连接工厂获取到一个连接。
  3)、Channel,通过连接创建一个Channel,网络通信信道,可以发送和接收消息。Channel是Rabbitmq所有进行数据交互的关键。
  4)、Queue,创建一个队列,具体的消息存储队列。真正的物理的队列,存在于RabbitMQ的Broker上面。进行存储消息的功能。
  5)、Producer生产者,生产者生产消息和Consumer消费者,消费者消费消息。

方式一,由于使用的maven构建的springboot2.x版本的项目,引入的依赖包如下所示:

 <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1..RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<groupId>com.bie</groupId>
<artifactId>rabbitmq</artifactId>
<version>0.0.-SNAPSHOT</version>
<name>rabbitmq</name>
<description>Demo project for Spring Boot</description> <properties>
<java.version>1.8</java.version>
</properties> <dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
</dependencies> <build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build> </project>

配置application.properties的配置文件,将rabbitmq所在的服务器地址,端口号,账号,密码,以及队列的名称。

 # 给当前项目起名称.
spring.application.name=rabbitmq # 配置rabbitmq的参数.
# rabbitmq服务器的ip地址.
spring.rabbitmq.host=192.168.110.133
# rabbitmq的端口号5672,区别于浏览器访问界面的15672端口号.
spring.rabbitmq.port=
# rabbitmq的账号.
spring.rabbitmq.username=guest
# rabbitmq的密码.
spring.rabbitmq.password=guest # 队列的名称
rabbitmq.queue=queue001

首先创建一个队列,在项目启动的时候,就进行加载,方便生产者生产的消息保存到队列里面。

 package com.example.bie.config;

 import org.springframework.amqp.core.Queue;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; /**
*
* @author biehl
*
* @Configuration项目启动加载本类
*
*/
@Configuration
public class RabbitMqQueueConfig { @Value("${rabbitmq.queue}")
private String queueName; /**
* 创建一个队列
*
* @return
*/
@Bean
public Queue createQueue() {
return new Queue(this.queueName);
} }

然后,创建好生产者和消费者以后,可以使用web项目的请求,创建一个控制类,来发送消息,触发生产者生产消息,触发消费者消费消息。

 package com.example.bie.controller;

 import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody; import com.example.bie.rabbitmq.producer.RabbitmqProducer; /**
*
* @author biehl
*
*/
@Controller
public class RabbitmqController { @Autowired
private RabbitmqProducer rabbitmqProducer; @RequestMapping(value = "/sendMessage")
@ResponseBody
public void rabbitmqSendMessage() {
String msg = "消息产===>生者<===消息message: ";
for (int i = ; i < ; i++) {
rabbitmqProducer.producer(msg + i);
}
} }

生产者生产消息的,实现类,如下所示:

 package com.example.bie.rabbitmq.producer;

 import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; /**
*
* @author biehl
*
* RabbitmqProducer消息发送者
*
* @Component加入到容器中.
*
*/
@Component
public class RabbitmqProducer { @Autowired
private AmqpTemplate rabbitmqAmqpTemplate; @Value("${rabbitmq.queue}")
private String queueName; /**
* 发送消息的方法
*/
public void producer(String msg) {
// 向消息队列中发送消息
// 参数1,队列的名称
// 参数2,发送的消息
this.rabbitmqAmqpTemplate.convertAndSend(this.queueName, msg);
} }

消费者消费消息的实现类,如下所示:

 package com.example.bie.rabbitmq.consumer;

 import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; /**
*
* @author biehl
*
* RabbitmqConsumer消息消费者
*
* 消费者是根据消息队列的监听器,进行消息的接收和消费。
*
* 消息队列发生变化,消息事件就会产生,触发方法进行消息的接收。
*
*/
@Component
public class RabbitmqConsumer { @Value("${rabbitmq.queue}")
private String queueName; /**
* 消费者消费消息,接受消息的方法,采用消息队列监听机制.
*
* @RabbitListener
*
* 意思是当队列发生变化,消息事件产生了或者生产者发送消息了。
*
* 马上就会触发这个方法,进行消息的消费。
*/
@RabbitListener(queues = "queue001")
public void consumer(String msg) {
// 打印消息
System.out.println("消费者===>消费<===消息message: " + msg);
} }

springboot2.x版本的主启动类,如下所示:

 package com.example;

 import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication
public class RabbitmqApplication { public static void main(String[] args) {
SpringApplication.run(RabbitmqApplication.class, args);
} }

效果如下所示:

方式二,或者使用下面这种方式,直接进行生产者生产消息和消费者消费消息的测试,生产者生产消息的代码如下所示:

 package com.example.bie;

 import java.io.IOException;
import java.util.concurrent.TimeoutException; import com.rabbitmq.client.AMQP.BasicProperties;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory; /**
*
* @author biehl
*
* ConnectionFactory,获取连接工厂。
*
* Connection,一个连接。
*
* Channel,数据通信信道,可以发送和接受消息。
*
* Queue,具体的消息存储队列。
*
* Producer和Consumer,生产和消费者。
*/
public class RabbitMqProducer { public static void main(String[] args) {
try {
// 1、创建一个ConnectionFactory
ConnectionFactory connectionFactory = new ConnectionFactory();
// 配置服务器ip地址,端口号,虚拟主机
connectionFactory.setHost("192.168.110.133");
connectionFactory.setPort();
connectionFactory.setVirtualHost("/"); // 2、创建连接工厂创建连接
Connection connection = connectionFactory.newConnection(); // 3、通过connection创建一个Channel
Channel channel = connection.createChannel(); // 4、通过Channel发送数据。消息组成部分就是props(即消息的附加属性)和body(消息实体)。
// 生产者发送消息,只需要指定exchange和routingKey。
String exchange = "";// 数据通信信道,交换机,接受消息,根据路由键转发消息到绑定的队列。
// 一个路由规则,虚拟机可以用它来确定如何路由一个特定消息。
String routingKey = "queue001";
BasicProperties props = null;// 消息的附加属性
// 循环发送消息
System.out.println("开始生产消息......");
for (int i = ; i < ; i++) {
// 消息实体
// String msg = "Hello RabbitMQ!";
byte[] body = (String.valueOf(i) + " hello RabbitMQ!!!").getBytes();
// 如果exchange是空的话,会使用AMQP default这个Exchange。
// 然后会根据routingKey的名称去队列里面找到名称对应的,然后将消息路由过去。
channel.basicPublish(exchange, routingKey, props, body);
} // 5、关闭连接,原则,由小到大进行关闭
channel.close();
connection.close();
} catch (IOException e) {
e.printStackTrace();
} catch (TimeoutException e) {
e.printStackTrace();
}
} }

消费者消费消息的代码如下所示:

 package com.example.bie;

 import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeoutException; import com.rabbitmq.client.AMQP.Queue.DeclareOk;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.Consumer;
import com.rabbitmq.client.ConsumerCancelledException;
import com.rabbitmq.client.QueueingConsumer;
import com.rabbitmq.client.QueueingConsumer.Delivery;
import com.rabbitmq.client.ShutdownSignalException; /**
*
* @author biehl
*
*/
public class RabbitMqConsumer { public static void main(String[] args) {
try {
// 1、创建一个ConnectionFactory
ConnectionFactory connectionFactory = new ConnectionFactory();
// 配置服务器ip地址,端口号,虚拟主机
connectionFactory.setHost("192.168.110.133");
connectionFactory.setPort();
connectionFactory.setVirtualHost("/"); // 2、创建连接工厂创建连接
Connection connection = connectionFactory.newConnection(); // 3、通过connection创建一个Channel
Channel channel = connection.createChannel(); // 4、创建(声明)一个队列
String queue = "queue001";// 队列
boolean durable = true;// 是否持久化,true是持久化,false是不持久化
// 独占的方式,只有一个channel可以去监听,其他channel不能进行监听。保证了顺序消费。
boolean exclusive = false;
boolean autoDelete = false;// 队列没有和Exchange绑定,就进行自动删除
// 扩展参数
Map<String, Object> arguments = new HashMap<String, Object>();
DeclareOk declareOk = channel.queueDeclare(queue, durable, exclusive, autoDelete, arguments);
System.out.println("consumerCount: " + declareOk.getConsumerCount()); // 5、创建消费者,指定参数,消费者建立在那个channel连接之上
QueueingConsumer queueingConsumer = new QueueingConsumer(channel); // 6、对channel进行设置。queue是设置要消费的队列名称。
boolean autoAck = true;// 是否自动签收。
Consumer callback = queueingConsumer;//
channel.basicConsume(queue, autoAck, callback); // 7、获取消息
// 消费者创建起来了,消费者监听的队列创建起来了。接下来就获取消息。
// delivery是消息封装的对象
System.out.println("等待消费......");
while (true) {
// 获取消息
Delivery delivery = queueingConsumer.nextDelivery();
String body = new String(delivery.getBody());
System.out.println("消费端body: " + body);
System.out.println("envelope" + delivery.getEnvelope().toString());
} // 8、关闭连接,原则,由小到大进行关闭
// channel.close();
// connection.close();
} catch (IOException e) {
e.printStackTrace();
} catch (TimeoutException e) {
e.printStackTrace();
} catch (ShutdownSignalException e) {
e.printStackTrace();
} catch (ConsumerCancelledException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
} }

实现的效果,除了控制台的输出,你也可以在管控台里面查看对应的效果,如连接Connection的个数、Channel的个数、Exchange的个数、Queue的个数、Consumer的个数、以及主页折线图展示的最新消息个数、消费速率等等信息。观察这些变化以达到监控的目的。

12、RabbitMQ的Exchange交换机。Exchange接受消息(即生产者生产的消息,将消息投递到交换机Exchange上面),并且根据路由键转发消息所绑定的队列。

RabbitMQ架构图,概述,如下所示:

  1)、蓝色的框,主要表示,生产者客户端将消息投递(Send Message)到交换机Exchange上面,通过路由关系,将生产者生产的消息路由到指定的队列里面。
  2)、绿色的框,主要表示,消费者客户端监听队列里面的消息(Receive Message),进行消费。消费者客户端和队列建立了监听,然后接收消息。
  3)、红色的虚线框,主要表示,RabbitMQ Server服务器。
  4)、黄色的框,主要表示,路由键Routing key,一个绑定的关系,即交换机Exchange和队列Queue建立一个绑定Binding。交换机Exchange上面的消息到达那个队列Queue的规则主要是由路由键Routing key来指定的。

13、交换机的属性,如下所示:

  1)、Name:交换机的名称,可以自己指定交换机的名称。
  2)、Type:交换机的类型direct,topic,fanout,headers。
    a)、Direct Exchange(即直连交换机,路由键Routing key必须一致性),所有发送到Direct Exchange的消息被转发到RouteKey中指定的Queue。路由规则:Direct Exchange直连交换机,Routing key的名称必须完全匹配(即生产者生产消息携带的路由键和将交换机和队列绑定的路由键必须一致),就会将交换机Exchange上面的消息发送到(路由到)队列Queue上面。
      注意:Direct模式可以使用RabbitMQ自带的Exchange,即default Exchange,所以不需要将Exchange进行任何绑定(binding)操作,消息传递时,RouteKey必须完全匹配才会被队列接收,否则该消息会被抛弃。

    b)、Topic Exchange(即话题交换机,路由键Routing key规则匹配或者成为模糊匹配),所有发送到Topic Exchange的消息被转发到所有关心RouteKey中指定Topic的Queue上。Exchange将RouteKey和某Topic进行模糊匹配,此时队列需要绑定一个Topic。注意:可以使用通配符进行模糊匹配。符号,"#"匹配一个或者多个词,符号"*"匹配不多不少一个词(即*号仅仅可以匹配一个词)。路由规则:生产者生产的消息携带的路由键Routing key,如果交换机与队列Queue绑定的路由键,和生产者生产消息携带的路由键规则匹配上,就可以将交换机上面的消息发送到该队列上。

    c)、Fanout Exchange(即广播交换机,没有路由键Routing key的概念),不处理路由键,只需要简单的将队列绑定到交换机上面。发送到交换机的消息都会被转发到与该交换机绑定的所有队列上面(即,一个或者多个队列绑定交换机,那么交换机会将消息转发到一个或者多个队列上面)。Fanout交换机转发消息是最快的(性能最好,因为广播交换机,不做匹配,没有路由规则)。 

    d)、Headers Exchange,根据消息头进行路由,不是很常用。

  3)、Durability:是否需要持久化,true为持久化,false表示非持久化。
  4)、Auto Delete:当最后一个绑定到Exchange上的队列删除后,自动删除该Exchange。值为true表示自动删除,值为false表示不进行自动删除。
  5)、Internal:当前Exchange是否用于RabbitMQ内部使用,默认为false。基本不使用该属性。
  6)、Arguments:扩展参数,用户扩展AMQP协议自制定化使用。

14、RabbitMQ的绑定Binding。

  答:Binding绑定,是Exchange和Exchange、Queue之间的连接关系。即交换机和交换机可以绑定,交换机和队列可以进行绑定。Binding中可以包含Routing key或者参数。

15、RabbitMQ的消息队列Queue。

  答:消息队列Queue,实际存储消息数据,在实际的物理磁盘中有一块空间创建队列。包含的属性有,Durability是否持久化,Durable是持久化,Transient是不进行持久化。Auto delete,如果选择yes代表当最后一个监听被移除之后,该Queue会自动被删除。

16、RabbitMQ的消息Message。

  答:消息Message,服务器和应用程序之间传送的数据。消息本质就是一段数据,由Properties和Payload(即Body)组成。常用属性,delivery mode(消息到Broker上,可以做持久化,也可以做内存级别的非持久化),headers(自定义属性)。content_type,content_encoding(字符集),priority(优先级)。
correlation_id(唯一id),reply_to(消息失败了返回到那个队列),expiration(消息的过期时间),message_id(消息的id)。timestamp,type,user_id,app_id,cluster_id。

17、RabbitMQ的虚拟主机Virtual host。

  答:虚拟主机Virtual host,用于进行逻辑隔离,最上层的消息路由。虚拟主机不是物理的概念。一个Virtual Host里面可以有若个干Exchange和Queue。同一个Virtual Host里面不能有相同名称的Exchange或者Queue。

aaarticlea/jpeg;base64,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" alt="" />

作者:别先生

博客园:https://www.cnblogs.com/biehongli/

如果您想及时得到个人撰写文章以及著作的消息推送,可以扫描上方二维码,关注个人公众号哦。

最新文章

  1. Javascript之自定义事件
  2. Java介绍(重要特点)
  3. js call与apply的区别-Tom
  4. python中的namespace
  5. Http网络通信--网络图片查看
  6. 双网卡bond
  7. Android开发之MediaPlayer类
  8. Windows Azure功能更新:SQL Server AlwaysOn和Notification Hub 正式商用
  9. 第一个只出现一次的字符,josephus环,最大子数组和
  10. [原]node.js使用感想
  11. rpmrebuild备份glibc
  12. 量化投资:第8节 A股市场的回测
  13. python打造社工脚本
  14. WPF自学入门(八)WPF窗体之间的交互
  15. VUE项目注意点
  16. 两段锁协议(Two-Phase Locking――2PL)
  17. Microsoft SQL - 指令
  18. Python中结巴分词使用手记
  19. ionic中数据进行操作后,需要直接显示改变后的数据,数据刷新
  20. oracle使用3DES加密

热门文章

  1. Springcloud 配置 | 史上最全,一文全懂
  2. leetcode-字符串篇
  3. 使用Redis实现延时任务(二)
  4. 挑战10个最难回答的Java面试题(附答案)
  5. spring源码分析6: ApplicationContext的初始化与BeanDefinition的搜集入库
  6. C#爬虫例子
  7. C++利用宏实现变量交换的三种方式
  8. windows 下安装beego
  9. Java生鲜电商平台-订单模块状态机架构设计
  10. Python 條件式 Condition