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 <rammohanga...@gmail.com>
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 <rob.j.godf...@gmail.com>
> 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 <rammohanga...@gmail.com
> >
> > 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 <rob.j.godf...@gmail.com>
> > > wrote:
> > >
> > > > On 7 April 2016 at 23:16, rammohan ganapavarapu <
> > rammohanga...@gmail.com
> > > >
> > > > 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 <
> rob.j.godf...@gmail.com
> > >
> > > > > 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 <
> > > > rammohanga...@gmail.com
> > > > > >
> > > > > > 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
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>

Reply via email to