I'm trying to use the ActiveMQ Xbean configuration in a Spring configuration file to configure an embedded broker. Up to now I've been simply instantiation a BrokerService and setting transport connectors and network connectors directly. I'd like to switch to using the "amq" namespace support but I'm having trouble figuring out how to dynamically generate the transport connectors on the broker. My deployments environments vary and many contain multiple interfaces so I specify my broker URLs as a comma delimited string in a configuration file, such as: brokerUrls = tcp://192.168.1.1:8025,tcp://192.168.10.1:8025,stomp://192.168.1.1:8035 I have a bean factory that I created that can generate a java.util.ArrayList of TransportConnectors to use; however I don't see any easy way to reference this list from the Xbean configuration. I want to do something like: <amq:transportConnectors> <bean factory-bean="networkInterfaceTransportConnectorFactory" factory-method="create" /> </amq:transportConnectors> But that doesn't seem to work and generates the error: org.springframework.beans.ConversionNotSupportedException: Failed to convert property value of type 'java.util.ArrayList' to required type 'java.util.List' for property 'transportConnectors'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.util.ArrayList] to required type [org.apache.activemq.broker.TransportConnector] for property 'transportConnectors[0]': no matching editors or conversion strategy found I'm sure I could make this work through some combination of Spring 3's environment/profile support, but I'd like to just be able to set a list of preconfigured transport connectors on the broker during construction. Any suggestions? Thanks, -mike
|
Mike Pilone | Software Architect, Distribution | [hidden email]
| o: 202-513-2679 m: 703-969-7493 |
Nevermind. I found I was just able to do: <amq:broker id="broker" useJmx="true" start="true"> <amq:persistenceAdapter> <amq:kahaDB directory="$data_path}"/> </amq:persistenceAdapter>
<property name="brokerName" ref="brokerName" />
<property name="transportConnectors"> <bean factory-bean="networkInterfaceTransportConnectorFactory" factory-method="create" /> </property>
<property name="networkConnectors"> <bean factory-bean="networkInterfaceNetworkConnectorFactory" factory-method="create" /> </property> … </amq:broker> I didn't realize that I could mix normal spring context property tags with the amq namespaced broker definition. -mike From: Mike Pilone <[hidden email]> Reply-To: "[hidden email]" <[hidden email]> Date: Wednesday, September 12, 2012 10:13 AM To: users <[hidden email]> Subject: Dynamic TransportConnector Config with xbean I'm trying to use the ActiveMQ Xbean configuration in a Spring configuration file to configure an embedded broker. Up to now I've been simply instantiation a BrokerService and setting transport
connectors and network connectors directly. I'd like to switch to using the "amq" namespace support but I'm having trouble figuring out how to dynamically generate the transport connectors on the broker. My deployments environments vary and many contain multiple interfaces so I specify my broker URLs as a comma delimited string in a configuration file, such as: brokerUrls = tcp://192.168.1.1:8025,tcp://192.168.10.1:8025,stomp://192.168.1.1:8035 I have a bean factory that I created that can generate a java.util.ArrayList of TransportConnectors to use; however I don't see any easy way to reference this list from the Xbean configuration.
I want to do something like: <amq:transportConnectors> <beanfactory-bean="networkInterfaceTransportConnectorFactory"factory-method="create"/> </amq:transportConnectors> But that doesn't seem to work and generates the error: org.springframework.beans.ConversionNotSupportedException: Failed to convert property value of type 'java.util.ArrayList' to required type 'java.util.List' for property 'transportConnectors'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.util.ArrayList] to required type [org.apache.activemq.broker.TransportConnector] for property 'transportConnectors[0]': no matching editors or conversion strategy found I'm sure I could make this work through some combination of Spring 3's environment/profile support, but I'd like to just be able to set a list of preconfigured transport connectors on the broker during construction. Any suggestions? Thanks, -mike |
Mike Pilone | Software Architect, Distribution | [hidden email] | o: 202-513-2679 m: 703-969-7493 |
Hi Mike,
it's a nice approach. We should have something like this supported especially for defining network connectors which can be complex to set. Regards -- Dejan Bosanac Senior Software Engineer | FuseSource Corp. [hidden email] | fusesource.com skype: dejan.bosanac | twitter: @dejanb blog: http://www.nighttale.net ActiveMQ in Action: http://www.manning.com/snyder/ On Wed, Sep 12, 2012 at 6:20 PM, Mike Pilone <[hidden email]> wrote: > Nevermind. I found I was just able to do: > > <amq:broker id="broker" useJmx="true" start="true"> > > <amq:persistenceAdapter> > > <amq:kahaDB directory="$data_path}"/> > > </amq:persistenceAdapter> > > > > <property name="brokerName" ref="brokerName" /> > > > > <property name="transportConnectors"> > > <bean factory-bean="networkInterfaceTransportConnectorFactory" > factory-method="create" /> > > </property> > > > > <property name="networkConnectors"> > > <bean factory-bean="networkInterfaceNetworkConnectorFactory" > factory-method="create" /> > > </property> > > … > > </amq:broker> > > > I didn't realize that I could mix normal spring context property tags with > the amq namespaced broker definition. > > > -mike > > > | Mike Pilone | Software Architect, Distribution | [hidden email] | o: > 202-513-2679 m: 703-969-7493**** > > > From: Mike Pilone <[hidden email]> > Reply-To: "[hidden email]" <[hidden email]> > Date: Wednesday, September 12, 2012 10:13 AM > To: users <[hidden email]> > Subject: Dynamic TransportConnector Config with xbean > > I'm trying to use the ActiveMQ Xbean configuration in a Spring > configuration file to configure an embedded broker. Up to now I've been > simply instantiation a BrokerService and setting transport connectors and > network connectors directly. I'd like to switch to using the "amq" > namespace support but I'm having trouble figuring out how to dynamically > generate the transport connectors on the broker. > > My deployments environments vary and many contain multiple interfaces so I > specify my broker URLs as a comma delimited string in a configuration file, > such as: > > brokerUrls = tcp://192.168.1.1:8025,tcp://192.168.10.1:8025,stomp:// > 192.168.1.1:8035 > > I have a bean factory that I created that can generate a > java.util.ArrayList of TransportConnectors to use; however I don't see any > easy way to reference this list from the Xbean configuration. I want to do > something like: > > <amq:transportConnectors> > > <beanfactory-bean="networkInterfaceTransportConnectorFactory" > factory-method="create"/> > > </amq:transportConnectors> > > > But that doesn't seem to work and generates the error: > > > org.springframework.beans.ConversionNotSupportedException: Failed to > convert property value of type 'java.util.ArrayList' > > to required type 'java.util.List' for property 'transportConnectors'; > nested exception is java.lang.IllegalStateException: Cannot convert value > of type [java.util.ArrayList] to required type > [org.apache.activemq.broker.TransportConnector] for property > 'transportConnectors[0]': no matching editors or conversion strategy found > > > I'm sure I could make this work through some combination of Spring 3's > environment/profile support, but I'd like to just be able to set a list of > preconfigured transport connectors on the broker during construction. Any > suggestions? > > > Thanks, > > -mike > > > | Mike Pilone | Software Architect, Distribution | [hidden email] | o: > 202-513-2679 m: 703-969-7493**** > > |
Free forum by Nabble | Edit this page |