如果一个excahnge被定义成Internal,那么consumer是不能给它发消息的,会报错;
//
// Functional test demonstrating use of an internal exchange in an exchange to
// exchange routing scenario. The routing topology is:
//
// ------- -------
// -/ \- -/ \-
// / \ / \ +-------------+
// | e0 +------| e1 +-----------+ q1 |
// \ / \ / +-------------+
// -\ /- -\ /-
// ------- -------
// (internal)
//
// Where a non-internal exchange is bound to an internal exchange, which in
// turn is bound to a queue. A client should be able to publish to e0, but
// not to e1, and publications to e0 should be delivered into q1.
//
public class InternalExchange extends BrokerTestCase
{
private final String[] queues = new String[] { "q1" };
private final String[] exchanges = new String[] { "e0", "e1" };
protected void createResources() throws IOException
{
// The queues and exchange we create here are all auto-delete, so we
// don't need to override releaseResources() with their deletions...
for (String q : queues)
{
channel.queueDeclare(q, false, true, true, null);
}
// The second exchange, "e1", will be an 'internal' one.
for ( String e : exchanges )
{
channel.exchangeDeclare(e, "direct",
false, true,
!e.equals("e0"),
null);
}
channel.exchangeBind("e1", "e0", "");
channel.queueBind("q1", "e1", "");
}
public void testTryPublishingToInternalExchange()
throws IOException
{
byte[] testDataBody = "test-data".getBytes();
// We should be able to publish to the non-internal exchange as usual
// and see our message land in the queue...
channel.basicPublish("e0", "", null, testDataBody);
GetResponse r = channel.basicGet("q1", true);
assertTrue(Arrays.equals(r.getBody(), testDataBody));
// Publishing to the internal exchange will not be allowed...
channel.basicPublish("e1", "", null, testDataBody);
expectError(AMQP.ACCESS_REFUSED);
}
}
相关推荐
`rabbitmq-c`是RabbitMQ的一个C语言客户端库,它使得在C程序中与RabbitMQ服务器进行交互变得更加简单。本文将详细介绍如何使用CMake编译`rabbitmq-c-master`源码,并讨论相关知识点。 首先,我们需要了解CMake,这...
**RabbitMQ-c源码分析** RabbitMQ-c是一个轻量级且高效的C语言实现的RabbitMQ客户端库。RabbitMQ是一个开源的消息代理和队列服务器,它使用AMQP(Advanced Message Queuing Protocol)协议,广泛应用于分布式系统中...
RabbitMQ rabbitmq-server-3.6.12-1.el6.noarch 及其安装所需要的软件打包都在这里面,主要报卡一下软件:socat-1.7.3.2.tar.gz、rabbitmq-server-3.6.12-1.el6.noarch.rpm、rabbitmq-release-signing-key.asc、otp_...
标题中的“rabbitmq-c vs2019工程”指的是一个基于C++的RabbitMQ客户端库项目,该库已经适配了Visual Studio 2019。RabbitMQ是一种广泛使用的开源消息代理软件,它实现了Advanced Message Queuing Protocol (AMQP)...
1. **下载与解压**:首先,从官方网站或者提供的链接下载`rabbitmq-server-mac-standalone-3.5.3.tar.gz`,然后使用`tar -zxvf rabbitmq-server-mac-standalone-3.5.3.tar.gz`命令将其解压缩。 2. **环境配置**:...
标题中的“rabbitmq-server-3.6.5-1.noarch.rar”指的是RabbitMQ服务器的一个特定版本,即3.6.5版本。RabbitMQ是一个开源的消息队列系统,基于AMQP(Advanced Message Queuing Protocol)协议,用于在分布式系统中...
在Linux环境下,RabbitMQ的安装通常涉及下载其发行版的tar.gz文件,例如"rabbitmq-server-generic-unix-3.5.4.tar.gz"。这个版本是专门为Linux系统设计的。 首先,我们来详细解释一下RabbitMQ的核心概念和功能。...
在您提供的资源中,“rabbitmq-server-generic-unix-3.5.7.tar.rar”是一个针对Linux平台的RabbitMQ服务器的离线安装包。这个版本为3.5.7,您需要在Windows环境下解压后再用于Linux系统。下面将详细介绍RabbitMQ的...
本资源提供的`rabbitmq-server-3.8.3`是RabbitMQ服务器的一个版本,适用于那些在官网下载速度较慢的用户。 在安装`rabbitmq-server-3.8.3`之前,首先需要了解一些基础概念: 1. **消息队列**:消息队列是中间件的...
它基于AMQP(Advanced Message Queuing Protocol)协议,提供了多种语言的客户端库,包括我们这里关注的`rabbitmq-c`,这是一个用C语言编写的RabbitMQ客户端库。 `rabbitmq-c`是为那些希望在C语言环境中与RabbitMQ...
《深入理解RabbitMQ客户端库:rabbitmq-c》 RabbitMQ是一款广泛应用的消息中间件,它基于AMQP(Advanced Message Queuing Protocol)协议,提供高效、可靠的消息传递服务。在开发过程中,为了与RabbitMQ服务器进行...
这里提供了rabbitmq-server-3.7.3.exe百度网盘下载,官网下载实在是太慢了,亲测有效! rabbitmq-server-3.7.3.exe rabbitmq-server-3.7.3.exe rabbitmq-server-3.7.3.exe
标题中的“rabbitmq-server-3.6.5-1.noarch.zip”指的是RabbitMQ服务器的一个特定版本,即3.6.5版本。这个压缩包是针对非架构特定的(noarch),意味着它可以在多种处理器架构上运行,不局限于特定的CPU类型。此版本...
标题提到的"rabbitmq-server-3.8.3.exe"是RabbitMQ服务器的3.8.3版本安装程序,适用于64位操作系统。这个版本可能包含了一些新特性、性能优化以及对旧版本bug的修复。RabbitMQ每个新版本的发布都会带来一些改进,以...
最新版linux rabbitmq-server-generic-unix-3.9.1.tar.xz最新版linux rabbitmq-server-generic-unix-3.9.1.tar.xz
在本例中,我们关注的是`rabbitmq-server-3.6.15-1.el7.noarch.rpm`这个软件包,它是RabbitMQ服务器的3.6.15版本,针对的是Red Hat Enterprise Linux 7 (RHEL 7)或与其兼容的系统,如CentOS 7。 1. **RabbitMQ基础...
最新版windows rabbitmq-server-3.8.14.exe最新版windows rabbitmq-server-3.8.14.exe
最新版linux rabbitmq-server-generic-unix-3.8.14.tar.xz最新版linux rabbitmq-server-generic-unix-3.8.14.tar.xz
标题中的“rabbitmq-server-generic-unix-3.6.1.tar”是指RabbitMQ服务器的3.6.1版本的通用Unix安装包。RabbitMQ是一个开源的消息代理和队列服务器,广泛应用于分布式系统中,用于处理异步任务、消息传递和负载均衡...
这个压缩包“rabbitmq-server-mac-standalone-3.5.7.tar.gz”是专为MAC OS X操作系统设计的RabbitMQ服务器版本,支持10.6.4或更高版本。在本文中,我们将深入探讨RabbitMQ的核心概念、安装过程以及如何在MAC OS X上...