qpid-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Fraser Adams <fraser.ad...@blueyonder.co.uk>
Subject Re: Java Broker AMQP 1.0 support - is it by default?
Date Tue, 26 Aug 2014 12:38:36 GMT
Hi again Rob,
Sorry for yet another post .....

Firstly thanks very much for the answer around "

I think at some previous point
the 1.0 implementation could *only* connect to the default virtual host and
the hostname on the open field was ignored...

"

That makes sense, TBH I was starting to question my sanity there, and I 
was already on pretty thin ground :o) .........


Secondly on the point: "

you've got two virtual host nodes pointing at the same configuration
file... bad things should really be happening

"
Yeah I spotted that one myself and replaced the "default" with 
"localhost" in the second vhost object, however I'm afraid that I still 
had no joy with:

./send -a amqp://guest:guest@localhost/amq.fanout
CONNECTION ERROR (amqp:not-found) Unknown hostname localhost



There always seems to be some tweaks of config.json between versions, so 
I ended up going back to basics and deleted my config.json letting the 
Broker create a fresh one and then added my QMF/WebSocket/etc. config. 
to that

However when I added a new "localhost" vhost to that I still get the 
same error :-(
./send -a amqp://guest:guest@localhost/amq.fanout
CONNECTION ERROR (amqp:not-found) Unknown hostname localhost


I've attached my most recent config.json, I don't suppose you could take 
a look and let me know what I've messed up.

I am seeing a "localhost" subdirectory appearing in my qpid-work


probably unrelated at the start of my qpid.log I see
2014-08-26 13:15:19,289 WARN  [main] 
(model.ConfiguredObjectTypeRegistry) - A class definition could not be 
found while processing the model for 
'org.apache.qpid.server.virtualhostnode.berkeleydb.BDBHAVirtualHostNodeImpl': 
com/sleepycat/je/rep/StateChangeListener
2014-08-26 13:15:19,369 WARN  [main] 
(model.ConfiguredObjectTypeRegistry) - A class definition could not be 
found while processing the model for 
'org.apache.qpid.server.virtualhost.berkeleydb.BDBHAVirtualHostImpl': 
com/sleepycat/je/rep/StateChangeListener

Which suggests that something isn't being included in the packaged 
broker assembly, I'm just using the tar.gz from the main Maven build so 
I doubt it's anything I've failed to set up.



Stop Press....
Another thing, when I looked at qpid-work/default/config/default.json it 
contains a bunch of exchanges, whereas 
qpid-work/localhost/config/localhost.json is empty

When I copied default.json to localhost.json and changed the name inside 
to "localhost" I *finally* got
./send -a amqp://guest:guest@localhost/amq.fanout

to run without the error, so I may be making progress, but when I added 
the "localhost" vhost shouldn't that localhost.json be automatically 
populated with exchanges in the same way that the default.json was?


Ta!
Frase


On 26/08/14 11:37, Rob Godfrey wrote:
> On 26 August 2014 12:28, Fraser Adams <fraser.adams@blueyonder.co.uk> wrote:
>
>> On 26/08/14 09:50, Rob Godfrey wrote:
>>
>>> So, I ran last night with a virtualhost called localhost and the address
>>> amqp://guest:guest@localhost:5672/amq.fanout and it worked fine...
>>>
>> So *has* this stuff changed then, as I say I'm pretty convinced that I
>> tried the Java broker with Messenger a few months ago and it worked and I'm
>> certainly likely to have had a basic config with a default virtual host
>> named default. I've never needed a "localhost" vhost for anything else -
>> for example with the QMF plugin enabled and I do:
>>
>> qpid-config -b guest/guest@localhost
>> Total Exchanges: 6
>>            topic: 2
>>          headers: 1
>>           fanout: 1
>>           direct: 2
>>
>>     Total Queues: 1
>>          durable: 0
>>      non-durable: 1
>>
>> so for AMQP 0.10 from a python client I don't have to have any other
>> config in place (same for the Java QpidConfig) so this only seems to be an
>> issue from AMQP 1.0 (or possibly just from Messenger?)
>>
>>
>>
> AMQP 1.0 defines the open performative as having a hostname field - which
> indicates the "host" the connecting party wishes to attach to.  If that
> field is left blank (null or the empty string) then the Java Broker will
> use the default host.  Messenger is setting this field to the name of the
> hostname in the address string.  This means that when the Java Broker sees
> the open frame it sees a request to use host "localhost", so it looks
> amongst its virtual hosts for said name.  I think at some previous point
> the 1.0 implementation could *only* connect to the default virtual host and
> the hostname on the open field was ignored...
>
>
>>
>>> I would suggest creating a virtualhost called localhost
>>>
>> What's the syntax for that? I've tried the following (the second object
>> was what I added - I copied the first object, removed the id and changed
>> the name to localhost), but it doesn't seem to work, though the Broker
>> didn't complain either:
>>
>>
>>    "virtualhostnodes" : [ {
>>      "context" : {
>>        "virtualhostBlueprint" : "{ \"type\" : \"DERBY\", \"storePath\" :
>> \"${qpid.work_dir}/default/messages\" }",
>>        "virtualhostBlueprintUtilised" : "true"
>>      },
>>      "createdBy" : null,
>>      "createdTime" : 0,
>>      "id" : "13fe911a-2dbb-493e-b652-d3b70013e8d9",
>>      "lastUpdatedBy" : null,
>>      "lastUpdatedTime" : 1404484979134,
>>      "name" : "default",
>>      "storePath" : "${qpid.work_dir}/default/config",
>>      "type" : "JSON"
>>    },
>>
>>    {
>>      "context" : {
>>        "virtualhostBlueprint" : "{ \"type\" : \"DERBY\", \"storePath\" :
>> \"${qpid.work_dir}/default/messages\" }",
>>        "virtualhostBlueprintUtilised" : "true"
>>      },
>>      "createdBy" : null,
>>      "createdTime" : 0,
>>      "lastUpdatedBy" : null,
>>      "lastUpdatedTime" : 1404484979134,
>>      "name" : "localhost",
>>
>>      "storePath" : "${qpid.work_dir}/default/config",
>>      "type" : "JSON"
>>    } ]
>>
>>
> So the issue with that (and this really should cause an error) is that
> you've got two virtual host nodes pointing at the same configuration
> file... bad things should really be happening... anyway, if you change the
> instance of ${qpid.work_dir}/default to ${qpid.work_dir}/localhost in the
> localhost section that should work for you.
>
>
>
>>     (or just editing
>>> your config file to replace default with localhost if you like).
>>>
>>> For the next release I'm looking to add aliasing to virtualhosts to make
>>> this a little easier, and have the default virtual host initially also
>>> have
>>> aliases of "localhost", "127.0.0.1", etc
>>>
>> That'd be good, but like I say i really am pretty sure that this stuff was
>> actually working a few months ago when I last played with Messenger and the
>> Java Broker
>>
>>
>>
> That may have been back when you could *only* connect to the default
> virtualhost with AMQP 1.0.  The issue now is that Messenger is putting the
> DNS / IP host into the host field of open, and unless you have set up the
> Java Broker that way, then that is not really what you want.
>
> -- Rob
>
>
>> Frase
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
>> For additional commands, e-mail: users-help@qpid.apache.org
>>
>>


Mime
View raw message