Rob, Thanks for detailed explanation, i wanted to restart with the changed properties if any for example today i have Anonymous SASL and later i may want to use password file. How do i pass SASL mechanism as -prop?
Thanks, Ram On Fri, Apr 8, 2016 at 2:10 AM, Rob Godfrey <[email protected]> wrote: > Hi Ram, > > The initial config file is only used when there is no broker config - the > idea is that it is used to populate the broker config on first startup. > Once there is a broker config file then this is used (since it may have > been updated by creating or modifying entities through the management > functions). The broker ships with a default initial config which is > contained within its jar files, however we allow people to provide there > own. Records in the config file a copied verbatim into the config store - > the only difference being that ids are generated for each entity. The > interpolation from property names to values is done each time the broker > reads the config. If the broker finds there is config in the store path > then it completely ignores the initial config - it does not examine any > differences. > > Are you looking to start a completely fresh broker each time, or merely to > be able to change certain properties (such as port numbers) on each > restart? If you do not want to retain any changes to the broker > configuration made while the broker is actually running, then you could use > a "memory" config store rather than a Json one. If you want to retain any > changes made through management, but desire the ability to change certain > properties (like ports) on each startup, then you don't need to worry about > the fact that the initial configuration is only loaded the first time - you > just need to pass in the property values you want on startup. > > In terms of an example system properties file... The default > initial-config.json defines the amqp port to be ${qpid.amqp_port} and the > http port to run on ${qpid.http_port}, so if I create a properties file > called rob.properties which contains > > qpid.http_port=8888 > qpid.amqp_port=5555 > > and then run qpid with the argument -props rob.properties then I get... > > [Broker] BRK-1002 : Starting : Listening on TCP port 5555 > [Broker] MNG-1001 : Web Management Startup > [Broker] MNG-1002 : Starting : HTTP : Listening on TCP port 8888 > > > So, when you use your initial or stored config you just need to ensure all > the variables you use in your config are set in your properties file (some > properties have defaults within the code if they are not otherwise set - > e.g. qpid.amqp_port will default to 5672 if it is not set elsewhere). > > Hope this helps, > Rob > > On 8 April 2016 at 00:41, rammohan ganapavarapu <[email protected]> > wrote: > > > Rob, > > > > Thank you, one more question on -icp and -sp, so what if i have updated > icp > > with some property change and restarted broker with icp (every time i > > restart broker i am using initial config > > "/opt/qpid-java-broker/bin/qpid-server -icp > > /opt/qpid-java-broker/etc/config.json" not sure if its is right way or > > not), does it automatically update config file in -sp? i my case it did > not > > updated the config file in store-path upon restart. What will happened > if i > > have differences in initial config file that i use to start broker and > the > > config file under store-path? > > > > Thanks, > > Ram > > > > On Thu, Apr 7, 2016 at 3:59 PM, Rob Godfrey <[email protected]> > > wrote: > > > > > This looks like a client error to me... the line which says: > > > > > > Client restricted itself to : PLAIN > > > > > > Out of interest what happens if you remove the &sasl_mechs='ANONYMOUS' > > from > > > your connection URL? Without any sort of restriction I'd expect the > > client > > > to do the right thing. > > > > > > I need to get to sleep now (1am here :-) )... I'll have deeper look in > > the > > > morning. > > > > > > -- Rob > > > > > > On 7 April 2016 at 23:51, rammohan ganapavarapu < > [email protected] > > > > > > wrote: > > > > > > > Rob, > > > > > > > > thanks for the explanation, do you have a sample > > > --system-properties-file? > > > > that i can take a look? > > > > > > > > Also i just tried 6.0.1 but my client/app is throwing this error, i > am > > > not > > > > a developer, i am ops guy and i dont want to change the existing code > > but > > > > wanted to make java qpid work. This is the error i am getting with > > > 6.0.1v.. > > > > > > > > 2016-04-07 22:32:36,726 > > > > QPIDConnectionManager-80478ba7-b31e-483a-823e-f726104ac1db ERROR > > > > S.QUEUECLIENTSERVICE - ConnectionImpl.openConnection() : Error > > connecting > > > > to Connection : 0 Host = qphost01 > > > > > > > > > > > > > > url=amqp://null:********@qphost011460067563391/?brokerlist='tcp://localhost:5672?connecttimeout='5000'&sasl_mechs='ANONYMOUS'' > > > > error Unknown virtualhost '' username=null > > > > 2016-04-07 22:32:36,731 > > > > QPIDConnectionManager-80478ba7-b31e-483a-823e-f726104ac1db ERROR > > > > S.QUEUECLIENTSERVICE - ConnectionImpl.openConnection() : Error > > connecting > > > > to Connection : 0 Host = qphost01 > > > > > > > > > > > > > > url=amqp://null:********@qphost011460067563391/?brokerlist='tcp://localhost:5672?connecttimeout='5000'&sasl_mechs='ANONYMOUS'' > > > > error Client and broker have no SASL mechanisms in common. Broker > > allows > > > : > > > > ANONYMOUS Client has : [EXTERNAL, GSSAPI, CRAM-MD5-HASHED, CRAM-MD5, > > > > AMQPLAIN, PLAIN, ANONYMOUS] Client restricted itself to : PLAIN > > > > username=guest > > > > > > > > > > > > And here is my sasl mechanism. > > > > > > > > curl -s 0:10001/service/sasl > > > > { > > > > "user" : "ANONYMOUS", > > > > "mechanisms" : [ "ANONYMOUS" ] > > > > > > > > Same SASL with 0.28 works fine with my app but 6.0.1 is not working. > > > > > > > > > > > > Thanks, > > > > Ram > > > > > > > > > > > > > > > > On Thu, Apr 7, 2016 at 3:39 PM, Rob Godfrey <[email protected] > > > > > > wrote: > > > > > > > > > On 7 April 2016 at 23:16, rammohan ganapavarapu < > > > [email protected] > > > > > > > > > > wrote: > > > > > > > > > > > Rob, > > > > > > > > > > > > Does v6.0.1 support Anonymous or no authentication? last time > when > > i > > > > try > > > > > to > > > > > > use .32 it was not working with Anonymous. > > > > > > > > > > > > > > > > Yes, Anonymous is supported. Which AMQP protocol are you using > > (0-9-1, > > > > > 0-10, or 1.0)... I would expect that Anonymous should work on 0.32 > > > > however > > > > > I think in 0.32 the "no authentication layer at all" option for > AMQP > > > 1.0 > > > > > probably didn't work (this is different to an authentication layer > > > which > > > > > allows anonymous). > > > > > > > > > > > > > > > > > > > > > > Sorry i was not clear in my previous email, i was taking about > > > > properties > > > > > > file not broker storage format, the use case is if i wanted to > > > override > > > > > > some of these properties and i have my own custom tool/script > that > > > > goes > > > > > > through the properties files and replace with the override i > > defined, > > > > so > > > > > i > > > > > > want to use the same tool/script for qpid config as well. My tool > > > only > > > > > > support key:value but if we have json array it wont work. So if i > > > want > > > > to > > > > > > pass overrides as "-prop" command line arguments what are the > > > > properties > > > > > > that java qpid support as command line? > > > > > > > > > > > > Below if my config, is it possible to pass all these as command > > line > > > > > > arguments? > > > > > > > > > > > > { > > > > > > "authenticationproviders" : [ { > > > > > > "id" : "7050933f-3485-4866-95d2-1f1b258ea3ac", > > > > > > "name" : "Anonymous", > > > > > > "type" : "Anonymous" > > > > > > } ], > > > > > > "defaultVirtualHost" : "default", > > > > > > "id" : "c433a66c-e6dc-4c48-be01-268295f580bc", > > > > > > "modelVersion" : "1.3", > > > > > > "name" : "Broker", > > > > > > "plugins" : [ { > > > > > > "id" : "58889cb7-9b9b-4866-bab2-4cfd63266dbf", > > > > > > "name" : "httpManagement", > > > > > > "pluginType" : "MANAGEMENT-HTTP" > > > > > > }, { > > > > > > "id" : "67282f5e-ebab-4341-9ff5-27a58fd2df89", > > > > > > "name" : "jmxManagement", > > > > > > "pluginType" : "MANAGEMENT-JMX" > > > > > > } ], > > > > > > "ports" : [ { > > > > > > "authenticationProvider" : "Anonymous", > > > > > > "id" : "99e13356-080a-4abe-852e-8c452149cdae", > > > > > > "name" : "JMX_CONNECTOR", > > > > > > "port" : "9099", > > > > > > "protocols" : [ "JMX_RMI" ] > > > > > > }, { > > > > > > "authenticationProvider" : "Anonymous", > > > > > > "id" : "12813407-62ae-429f-8bee-75802f3b6553", > > > > > > "name" : "RMI_REGISTRY", > > > > > > "port" : "8999", > > > > > > "protocols" : [ "RMI" ] > > > > > > }, { > > > > > > "authenticationProvider" : "Anonymous", > > > > > > "id" : "3b107675-edd7-40a3-86c2-3113b46157f9", > > > > > > "name" : "AMQP", > > > > > > "port" : "5672" > > > > > > }, { > > > > > > "authenticationProvider" : "Anonymous", > > > > > > "id" : "6dff5ecf-1a4b-46ad-b93d-f2606b5e4f6e", > > > > > > "name" : "HTTP", > > > > > > "port" : "10001", > > > > > > "protocols" : [ "HTTP" ] > > > > > > } ], > > > > > > "storeVersion" : 1, > > > > > > "virtualhosts" : [ { > > > > > > "createdTime" : 1439482250329, > > > > > > "id" : "eef20ba0-33d3-4b37-93a7-fe2b34e54503", > > > > > > "name" : "default", > > > > > > "storePath" : "/ebs//derbystore/default", > > > > > > "storeType" : "DERBY", > > > > > > "type" : "STANDARD" > > > > > > } ] > > > > > > } > > > > > > > > > > > > > > > > > > > > > > > In 6.0 you can replace any value in the JSON with a reference to a > > > > > property, for example > > > > > > > > > > "name" : "${myPortName}", > > > > > > > > > > this will then interpolate the value from the property, so if you > set > > > the > > > > > property myPortName to "RobsPort" that will be the value used. > Type > > > > > conversions will be performed, so if the required value is an > integer > > > it > > > > > will convert to an integer. If the value required is a list then > you > > > can > > > > > use a String representation of a list in Json format. > > > > > > > > > > You can set the properties individually, or you can pass in a > > > properties > > > > > file using -props or --system-properties-file (so if you have a > > > > properties > > > > > file already maybe you can just pass this in). > > > > > > > > > > > > > > > > One more question or may be clarification is, > > > > > > > > > > > > > > > > > > *-sp (--store-path) is the path of config file that will > generated > > by > > > > > qpidd > > > > > > from the initial config right? what is the use of store-path?* > > > > > > > > > > > > > > > > > That is correct. Some people just like to have config files in a > > > > > non-default location :-) > > > > > > > > > > Hope this helps, > > > > > Rob > > > > > > > > > > > > > > > > *Thanks,* > > > > > > > > > > > > *Ram* > > > > > > > > > > > > On Thu, Apr 7, 2016 at 3:02 PM, Rob Godfrey < > > [email protected] > > > > > > > > > > wrote: > > > > > > > > > > > > > Firstly, 0.28 is quite old now - I would recommend updating to > > > v6.0.1 > > > > > if > > > > > > > you can. > > > > > > > > > > > > > > Secondly I'm not sure I understand your question - are you > asking > > > > about > > > > > > > overriding particular properties, or the storage format for the > > > > broker > > > > > > > configuration - these are two different things. In terms of > > > > > properties / > > > > > > > context overrides this can be specified using a properties file > > (at > > > > > least > > > > > > > in v6 - I forget exactly how it worked on 0.28). In terms of > the > > > > > > > configuration, JSON is currently the only text based format > > > > supported. > > > > > > You > > > > > > > can use a database for the broker config storage, there are > built > > > in > > > > > > > mechanisms to support Derby, BDB, and generic JDBC config > stores. > > > > > > > > > > > > > > May I ask what advantage you would get by using YAML or > > properties > > > > > files > > > > > > > instead of JSON? > > > > > > > > > > > > > > -- Rob > > > > > > > > > > > > > > On 7 April 2016 at 22:43, rammohan ganapavarapu < > > > > > [email protected] > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > Hi, > > > > > > > > > > > > > > > > Is there any way to start qpid-java-0.28 broker using > > .properties > > > > > file > > > > > > or > > > > > > > > .xml or .yaml file instead of .json file? or what are the > other > > > > ways > > > > > to > > > > > > > > pass override properties instead of JSON config file? > > > > > > > > > > > > > > > > > > > > > > > > Thanks, > > > > > > > > Ram > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
