Running Broker(運行 broker)java
Embedded(嵌入的) Brokerweb
BrokerService broker = new BrokerService(); broker.addConnector("tcp://localhost:61616"); broker.start();
BrokerService broker = new BrokerService(); broker.setName("fred"); broker.addConnector("tcp://localhost:61616"); broker.start();
能夠經過BrokerFactory 來建立broker,例如:apache
BrokerService broker = BrokerFactory.createBroker(new URI(someURI));someURI 的可選值以下:
BrokerService broker = BrokerFactory.createBroker(new URI("xbean:com/test/activemq.xml"));
<bean id="broker" class="org.apache.activemq.xbean.BrokerFactoryBean"> <property name="config" value="classpath:org/apache/activemq/xbean/activemq.xml" /> <property name="start" value="true" /> </bean>
Monitoring Broker(監控broker)json
<broker useJmx="true" brokerName="broker1> <managementContext> <managementContext createConnector="true"/> </managementContext> ... </broker>
<broker xmlns="http://activemq.org/config/1.0" brokerName="localhost" useJmx="true"> <managementContext> <managementContext createConnector="false"/> </managementContext> </broker>
# The "monitorRole" role has readonly access. # The "controlRole" role has readwrite access. monitorRole readonly controlRole readwrite conf/jmx.password: # The "monitorRole" role has password "abc123". # The "controlRole" role has password "abcd1234". monitorRole abc123 controlRole abcd1234
REM set SUNJMX=-Dcom.sun.management.jmxremote.port=1616 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false
set SUNJMX=-Dcom.sun.management.jmxremote.port=1616 -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.password.file=%ACTIVEMQ_BASE%/conf/jmx.password -Dcom.sun.management.jmxremote.access.file=%ACTIVEMQ_BASE%/conf/jmx.access
Monitoring Broker安全
<jetty xmlns="http://mortbay.com/schemas/jetty/1.0"> <connectors> <nioConnector port="8161" /> </connectors> ... </jetty>
set JAVA_OPTS=%JAVA_OPTS% -Dwebconsole.type="properties" set JAVA_OPTS=%JAVA_OPTS% -Dwebconsole.jms.url="tcp://localhost:61616" set JAVA_OPTS=%JAVA_OPTS% -Dwebconsole.jmx.url="service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi" set JAVA_OPTS=%JAVA_OPTS% -Dwebconsole.jmx.role="" set JAVA_OPTS=%JAVA_OPTS% -Dwebconsole.jmx.password=""
AdvisorySupport.getConsumerAdvisoryTopic() AdvisorySupport.getProducerAdvisoryTopic() AdvisorySupport.getDestinationAdvisoryTopic() AdvisorySupport.getExpiredTopicMessageAdvisoryTopic() AdvisorySupport.getExpiredQueueMessageAdvisoryTopic() AdvisorySupport.getNoTopicConsumersAdvisoryTopic() AdvisorySupport.getNoQueueConsumersAdvisoryTopic()
Destination advisoryDestination = AdvisorySupport.getProducerAdvisoryTopic(destination) MessageConsumer consumer = session.createConsumer(advisoryDestination); consumer.setMessageListener(this); // ... public void onMessage(Message msg) { if (msg instanceof ActiveMQMessage) { try { ActiveMQMessage aMsg = (ActiveMQMessage) msg; ProducerInfo prod = (ProducerInfo) aMsg.getDataStructure(); } catch (JMSException e) { log.error("Failed to process message: " + msg); } } }
<broker xmlns="http://activemq.org/config/1.0"> <transportConnectors> ... <transportConnector name="xmpp" uri="xmpp://localhost:61222"/> </transportConnectors> </broker>
<beans> <broker useJmx="true" xmlns="http://activemq.org/config/1.0"> ... </broker> <commandAgent xmlns="http://activemq.org/config/1.0"/> </beans>
<commandAgent xmlns="http://activemq.org/config/1.0" brokerUser="user" brokerPassword="passward"/>
<broker xmlns="http://activemq.org/config/1.0" brokerName="localhost" useJmx="true"> ... <plugins> <connectionDotFilePlugin file="connection.dot"/> <destinationDotFilePlugin file="destination.dot"/> </plugins> </broker>