Hmmm, the markup in the "wrong" configuration file is a lot more
straightforward.
I find it confusing to use the name of the exchange is used as both data
and metadata (element content and the name of an element).
Jonathan
--- Begin Message ---
And a little more digging....
Looking at how the code interprets the configuration file, versus how the
example is used in virtualhosts.xml ... it appears to me as if the example
in our release is wrong
I *think* that instead of looking like
<exchange>
<name>test</name>
<type>fanout</type>
<durable>true</durable>
</exchange>
instead it should be specified as
<exchange>
<name>test</name>
<test> <!-- use tag with the same name as the exchange you are
defining -->
<type>fanout</type>
<durable>true</durable>
</test>
</exchange>
There is some code that says that if it doesn't find a configuration,
default to direct as the type....
I shall test this tomorrow when I'm back using a computer that's actually
capable of running the broker
Apologies,
Rob
2009/9/30 Robert Godfrey <[email protected]>
> Hi Mark,
>
> 2009/9/30 mARK bLOORE <[email protected]>
>
>> Thanks for the reply, Rob, but actually I set the exchange to fanout
>> in the config file, and declared it to be fanout in my code, but the
>> broker seems to think it was configured as direct.
>>
>> If I don't configure it the code runs fine, but I would rather have it
>> already exist, so that I can publish to it without having to ensure
>> that a queue is bound to it first.
>>
>>
>>
> My apologies, I read the error message in haste.... and must have mentally
> swapped the order of "fanout" and "direct"
>
> The error code from the Java Broker says
>
> 'Attempt to redeclare exchange: test-exchange of type direct to
> fanout. [error code 530: not allowed]'
>
> This is generated by the following code inside the Java Broker:
>
> else if (!exchange.getType().equals(body.getType()))
> {
>
> throw new AMQConnectionException(AMQConstant.NOT_ALLOWED,
> "Attempt to redeclare exchange: " + body.getExchange() + " of type " +
> exchange.getType() + " to " + body.getType() +".",body.getClazz(),
> body.getMethod(),body.getMajor(),body.getMinor(),null);
> }
>
> So it appears that the config is creating a direct exchange and not a
> fanout exchange as you would expect...
>
> I'm presuming that your config:
>
> <exchanges>
> <exchange>
> <type>fanout</type>
> <name>test-exchange</name>
> <durable>true</durable>
> </exchange>
> <.exchanges>
>
> is not a completely accurate cut and paste (i.e. the last line is actually
> </exchanges> in the config file?)
>
> However looking at the current codebase I can see no reason why an exchange
> declared in the config would be created as direct... Can you confirm which
> release of the broker you are using?
>
> Thanks,
> Rob
>
>
>
>
>
--- End Message ---
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project: http://qpid.apache.org
Use/Interact: mailto:[email protected]