public AbstractActiveMQClientResource(String url) { if (url == null) { throw new IllegalArgumentException(String.format("Error creating %s - url cannot be null", this.getClass().getSimpleName())); } try { this.serverLocator = ActiveMQClient.createServerLocator(url); } catch (Exception ex) { throw new RuntimeException(String.format("Error creating %s - createServerLocator( %s ) failed", this.getClass().getSimpleName(), url), ex); } }
public AbstractActiveMQClientResource(String url) { if (url == null) { throw new IllegalArgumentException(String.format("Error creating %s - url cannot be null", this.getClass().getSimpleName())); } try { this.serverLocator = ActiveMQClient.createServerLocator(url); } catch (Exception ex) { throw new RuntimeException(String.format("Error creating %s - createServerLocator( %s ) failed", this.getClass().getSimpleName(), url), ex); } }
@Override public void initialize(File configurationFile, StatsLogger statsLogger) throws IOException { this.config = readConfig(configurationFile); log.info("ActiveMQ Artemis driver configuration: {}", writer.writeValueAsString(config)); try { ServerLocator serverLocator = ActiveMQClient.createServerLocator(config.brokerAddress); serverLocator.setConfirmationWindowSize(1000); sessionFactory = serverLocator.createSessionFactory(); session = sessionFactory.createSession(); } catch (Exception e) { throw new IOException(e); } }
public static ServerLocator createLocator(int port) { TransportConfiguration config = createTransportConfigiguration(false, port); return ActiveMQClient.createServerLocator(true, config); }
/** * In a cluster of replicated live/backup pairs if a backup crashes and then its live crashes the cluster will * retain the topology information of the live such that when the live server restarts it will check the * cluster to see if its nodeID is present (which it will be) and then it will activate as a backup rather than * a live. To prevent this situation an additional check is necessary to see if the server with the matching * nodeID is actually active or not which is done by attempting to make a connection to it. * * @param transportConfiguration * @return */ private boolean isActive(TransportConfiguration transportConfiguration) { boolean result = false; try (ServerLocator serverLocator = ActiveMQClient.createServerLocator(false, transportConfiguration); ClientSessionFactory clientSessionFactory = serverLocator.createSessionFactory(); ClientSession clientSession = clientSessionFactory.createSession(user, password, false, false, false, false, 0)) { result = true; } catch (Exception e) { if (logger.isDebugEnabled()) { logger.debug("isActive check failed", e); } } return result; }
/** * Create a serverLocator using the configuration * * @return locator */ public ServerLocator createServerLocator() { if (getDiscoveryConfiguration() != null) { return ActiveMQClient.createServerLocator(isHA(), getDiscoveryConfiguration()).setProtocolManagerFactory(clientProtocolManager); } else { return ActiveMQClient.createServerLocator(isHA(), getTransportConfig()).setProtocolManagerFactory(clientProtocolManager); } }
/** * Create a serverLocator using the configuration * * @return locator */ public ServerLocator createServerLocator() { if (getDiscoveryConfiguration() != null) { return ActiveMQClient.createServerLocator(isHA(), getDiscoveryConfiguration()).setProtocolManagerFactory(clientProtocolManager); } else { return ActiveMQClient.createServerLocator(isHA(), getTransportConfig()).setProtocolManagerFactory(clientProtocolManager); } }
void start() { log.info("Starting {}", this.getClass().getSimpleName()); try { serverLocator = ActiveMQClient.createServerLocator(getVmURL()); sessionFactory = serverLocator.createSessionFactory(); } catch (RuntimeException runtimeEx) { throw runtimeEx; } catch (Exception ex) { throw new EmbeddedActiveMQResourceException("Internal Client creation failure", ex); } try { session = sessionFactory.createSession(); producer = session.createProducer((String) null); session.start(); } catch (ActiveMQException amqEx) { throw new EmbeddedActiveMQResourceException("Internal Client creation failure", amqEx); } }
void start() { log.info("Starting {}", this.getClass().getSimpleName()); try { serverLocator = ActiveMQClient.createServerLocator(getVmURL()); sessionFactory = serverLocator.createSessionFactory(); } catch (RuntimeException runtimeEx) { throw runtimeEx; } catch (Exception ex) { throw new EmbeddedActiveMQResourceException("Internal Client creation failure", ex); } try { session = sessionFactory.createSession(); producer = session.createProducer((String) null); session.start(); } catch (ActiveMQException amqEx) { throw new EmbeddedActiveMQResourceException("Internal Client creation failure", amqEx); } }
@Override protected void executeRuntimeStep(OperationContext context, ModelNode operation) throws OperationFailedException { if (context.getRunningMode() != NORMAL) { throw MessagingLogger.ROOT_LOGGER.managementOperationAllowedOnlyInRunningMode(OPERATION_NAME, NORMAL); } checkAllowedOnJournal(context, OPERATION_NAME); String file = FILE.resolveModelAttribute(context, operation).asString(); boolean legacyPrefixes = LEGACY_PREFIXES.resolveModelAttribute(context, operation).asBoolean(); final XmlDataImporter importer = new XmlDataImporter(); importer.legacyPrefixes = legacyPrefixes; TransportConfiguration transportConfiguration = createInVMTransportConfiguration(context); try ( InputStream is = new FileInputStream(new File(file)); ServerLocator serverLocator = ActiveMQClient.createServerLocator(false, transportConfiguration); ClientSessionFactory sf = serverLocator.createSessionFactory() ) { ClientSession session = sf.createSession(); importer.process(is, session); } catch (Exception e) { throw new OperationFailedException(e); } }
@Test public void testTwoWaySSLVerifyClientTrustAllTrueByURI() throws Exception { NettyAcceptor acceptor = (NettyAcceptor) server.getRemotingService().getAcceptor("nettySSL"); acceptor.getConfiguration().put(TransportConstants.NEED_CLIENT_AUTH_PROP_NAME, true); server.getRemotingService().stop(false); server.getRemotingService().start(); server.getRemotingService().startAcceptors(); //Set trust all so this should work even with no trust store set StringBuilder uri = new StringBuilder("tcp://" + tc.getParams().get(TransportConstants.HOST_PROP_NAME).toString() + ":" + tc.getParams().get(TransportConstants.PORT_PROP_NAME).toString()); uri.append("?").append(TransportConstants.SSL_ENABLED_PROP_NAME).append("=true"); uri.append("&").append(TransportConstants.SSL_PROVIDER).append("=").append(TransportConstants.OPENSSL_PROVIDER); uri.append("&").append(TransportConstants.TRUST_ALL_PROP_NAME).append("=true"); uri.append("&").append(TransportConstants.KEYSTORE_PROVIDER_PROP_NAME).append("=").append(storeType); uri.append("&").append(TransportConstants.KEYSTORE_PATH_PROP_NAME).append("=").append(CLIENT_SIDE_KEYSTORE); uri.append("&").append(TransportConstants.KEYSTORE_PASSWORD_PROP_NAME).append("=").append(PASSWORD); server.getRemotingService().addIncomingInterceptor(new MyInterceptor()); ServerLocator locator = addServerLocator(ActiveMQClient.createServerLocator(uri.toString())); ClientSessionFactory sf = createSessionFactory(locator); sf.close(); }
@Test public void testTwoWaySSLVerifyClientTrustAllTrueByURI() throws Exception { NettyAcceptor acceptor = (NettyAcceptor) server.getRemotingService().getAcceptor("nettySSL"); acceptor.getConfiguration().put(TransportConstants.NEED_CLIENT_AUTH_PROP_NAME, true); server.getRemotingService().stop(false); server.getRemotingService().start(); server.getRemotingService().startAcceptors(); //Set trust all so this should work even with no trust store set StringBuilder uri = new StringBuilder("tcp://" + tc.getParams().get(TransportConstants.HOST_PROP_NAME).toString() + ":" + tc.getParams().get(TransportConstants.PORT_PROP_NAME).toString()); uri.append("?").append(TransportConstants.SSL_ENABLED_PROP_NAME).append("=true"); uri.append("&").append(TransportConstants.TRUST_ALL_PROP_NAME).append("=true"); uri.append("&").append(TransportConstants.KEYSTORE_PROVIDER_PROP_NAME).append("=").append(storeType); uri.append("&").append(TransportConstants.KEYSTORE_PATH_PROP_NAME).append("=").append(CLIENT_SIDE_KEYSTORE); uri.append("&").append(TransportConstants.KEYSTORE_PASSWORD_PROP_NAME).append("=").append(PASSWORD); server.getRemotingService().addIncomingInterceptor(new MyInterceptor()); ServerLocator locator = addServerLocator(ActiveMQClient.createServerLocator(uri.toString())); ClientSessionFactory sf = createSessionFactory(locator); sf.close(); }
@Test public void testTwoWaySSLVerifyClientTrustAllTrueByURI() throws Exception { NettyAcceptor acceptor = (NettyAcceptor) server.getRemotingService().getAcceptor("nettySSL"); acceptor.getConfiguration().put(TransportConstants.NEED_CLIENT_AUTH_PROP_NAME, true); server.getRemotingService().stop(false); server.getRemotingService().start(); server.getRemotingService().startAcceptors(); //Set trust all so this should work even with no trust store set StringBuilder uri = new StringBuilder("tcp://" + tc.getParams().get(TransportConstants.HOST_PROP_NAME).toString() + ":" + tc.getParams().get(TransportConstants.PORT_PROP_NAME).toString()); uri.append("?").append(TransportConstants.SSL_ENABLED_PROP_NAME).append("=true"); uri.append("&").append(TransportConstants.TRUST_ALL_PROP_NAME).append("=true"); uri.append("&").append(TransportConstants.KEYSTORE_PROVIDER_PROP_NAME).append("=").append(storeType); uri.append("&").append(TransportConstants.KEYSTORE_PATH_PROP_NAME).append("=").append(CLIENT_SIDE_KEYSTORE); uri.append("&").append(TransportConstants.KEYSTORE_PASSWORD_PROP_NAME).append("=").append(PASSWORD); server.getRemotingService().addIncomingInterceptor(new MyInterceptor()); ServerLocator locator = addServerLocator(ActiveMQClient.createServerLocator(uri.toString())); ClientSessionFactory sf = createSessionFactory(locator); sf.close(); }
protected ClientMessage getQueueAttribute(String queueName, String attribute) throws Exception { try (ServerLocator serverLocator = ActiveMQClient.createServerLocator(brokerURL)) { try (ClientSessionFactory sf = serverLocator.createSessionFactory()) { ClientSession managementSession; if (user != null || password != null) { managementSession = sf.createSession(user, password, false, true, true, false, 0); } else { managementSession = sf.createSession(false, true, true); } managementSession.start(); try (ClientRequestor requestor = new ClientRequestor(managementSession, "activemq.management")) { ClientMessage managementMessage = managementSession.createMessage(false); ManagementHelper.putAttribute(managementMessage, ResourceNames.QUEUE + queueName, attribute); managementSession.start(); ClientMessage reply = requestor.request(managementMessage); return reply; } finally { managementSession.stop(); } } } }
protected ClientMessage getQueueAttribute(String queueName, String attribute) throws Exception { try (ServerLocator serverLocator = ActiveMQClient.createServerLocator(brokerURL)) { try (ClientSessionFactory sf = serverLocator.createSessionFactory()) { ClientSession managementSession; if (user != null || password != null) { managementSession = sf.createSession(user, password, false, true, true, false, 0); } else { managementSession = sf.createSession(false, true, true); } managementSession.start(); try (ClientRequestor requestor = new ClientRequestor(managementSession, "activemq.management")) { ClientMessage managementMessage = managementSession.createMessage(false); ManagementHelper.putAttribute(managementMessage, ResourceNames.QUEUE + queueName, attribute); managementSession.start(); ClientMessage reply = requestor.request(managementMessage); return reply; } finally { managementSession.stop(); } } } }
@Test public void testParseURIs() throws Throwable { ActiveMQConnectionFactory factory = ActiveMQJMSClient.createConnectionFactory("(tcp://localhost:61616,tcp://localhost:61617)?blockOnDurableSend=false", "some name"); Assert.assertEquals(2, ((ServerLocatorImpl) factory.getServerLocator()).getInitialConnectors().length); ActiveMQConnectionFactory factory2 = new ActiveMQConnectionFactory("(tcp://localhost:61614,tcp://localhost:61616)?blockOnDurableSend=false"); Assert.assertEquals(2, ((ServerLocatorImpl) factory2.getServerLocator()).getInitialConnectors().length); ServerLocator locator = ServerLocatorImpl.newLocator("(tcp://localhost:61616,tcp://localhost:61617)?blockOnDurableSend=false"); Assert.assertEquals(2, ((ServerLocatorImpl) locator).getInitialConnectors().length); ServerLocator locator2 = ActiveMQClient.createServerLocator("(tcp://localhost:61616,tcp://localhost:61617)?blockOnDurableSend=false"); Assert.assertEquals(2, ((ServerLocatorImpl) locator2).getInitialConnectors().length); }
@Test public void testOneWaySSLwithURLandMaskedPasswordProperty() throws Exception { createCustomSslServer(); String text = RandomUtil.randomString(); DefaultSensitiveStringCodec codec = PasswordMaskingUtil.getDefaultCodec(); Map<String, String> params = new HashMap<>(); codec.init(params); String masked = codec.encode(PASSWORD); ServerLocator locator = addServerLocator(ActiveMQClient.createServerLocator("tcp://127.0.0.1:61616?sslEnabled=true;trustStoreProvider=" + storeType + ";trustStorePath=" + CLIENT_SIDE_TRUSTSTORE + ";trustStorePassword=" + masked + ";activemq.usemaskedpassword=true")); ClientSessionFactory sf = addSessionFactory(createSessionFactory(locator)); ClientSession session = addClientSession(sf.createSession(false, true, true)); session.createQueue(CoreClientOverOneWaySSLTest.QUEUE, CoreClientOverOneWaySSLTest.QUEUE, false); ClientProducer producer = addClientProducer(session.createProducer(CoreClientOverOneWaySSLTest.QUEUE)); ClientMessage message = createTextMessage(session, text); producer.send(message); ClientConsumer consumer = addClientConsumer(session.createConsumer(CoreClientOverOneWaySSLTest.QUEUE)); session.start(); ClientMessage m = consumer.receive(1000); Assert.assertNotNull(m); Assert.assertEquals(text, m.getBodyBuffer().readString()); }
@Test public void testOneWaySSLwithURLandMaskedPasswordENCSyntax() throws Exception { createCustomSslServer(); String text = RandomUtil.randomString(); DefaultSensitiveStringCodec codec = PasswordMaskingUtil.getDefaultCodec(); Map<String, String> params = new HashMap<>(); codec.init(params); String masked = codec.encode(PASSWORD); ServerLocator locator = addServerLocator(ActiveMQClient.createServerLocator("tcp://127.0.0.1:61616?sslEnabled=true;trustStoreProvider=" + storeType + ";trustStorePath=" + CLIENT_SIDE_TRUSTSTORE + ";trustStorePassword=ENC(" + masked + ")")); ClientSessionFactory sf = addSessionFactory(createSessionFactory(locator)); ClientSession session = addClientSession(sf.createSession(false, true, true)); session.createQueue(CoreClientOverOneWaySSLTest.QUEUE, CoreClientOverOneWaySSLTest.QUEUE, false); ClientProducer producer = addClientProducer(session.createProducer(CoreClientOverOneWaySSLTest.QUEUE)); ClientMessage message = createTextMessage(session, text); producer.send(message); ClientConsumer consumer = addClientConsumer(session.createConsumer(CoreClientOverOneWaySSLTest.QUEUE)); session.start(); ClientMessage m = consumer.receive(1000); Assert.assertNotNull(m); Assert.assertEquals(text, m.getBodyBuffer().readString()); }
@Test public void testSubscribeWithAutoAckAndHyphenatedSelector() throws Exception { conn.connect(defUser, defPass); subscribe(conn, null, Stomp.Headers.Subscribe.AckModeValues.AUTO, null, "hyphenated_props:foo-bar = 'zzz'"); ServerLocator serverLocator = addServerLocator(ActiveMQClient.createServerLocator("vm://0")); ClientSessionFactory clientSessionFactory = serverLocator.createSessionFactory(); ClientSession clientSession = clientSessionFactory.createSession(true, true); ClientProducer producer = clientSession.createProducer(getQueuePrefix() + getQueueName()); ClientMessage ignoredMessage = clientSession.createMessage(false); ignoredMessage.putStringProperty("foo-bar", "1234"); ignoredMessage.getBodyBuffer().writeNullableSimpleString(SimpleString.toSimpleString("Ignored message")); ClientMessage realMessage = clientSession.createMessage(false); realMessage.putStringProperty("foo-bar", "zzz"); realMessage.getBodyBuffer().writeNullableSimpleString(SimpleString.toSimpleString("Real message")); producer.send(ignoredMessage); producer.send(realMessage); ClientStompFrame frame = conn.receiveFrame(10000); Assert.assertEquals(Stomp.Responses.MESSAGE, frame.getCommand()); Assert.assertTrue("Should have received the real message but got: " + frame, frame.getBody().equals("Real message")); conn.disconnect(); }
@Test public void testOneWaySSLwithURL() throws Exception { createCustomSslServer(); String text = RandomUtil.randomString(); ServerLocator locator = addServerLocator(ActiveMQClient.createServerLocator("tcp://127.0.0.1:61616?sslEnabled=true;trustStoreProvider=" + storeType + ";trustStorePath=" + CLIENT_SIDE_TRUSTSTORE + ";trustStorePassword=" + PASSWORD)); ClientSessionFactory sf = addSessionFactory(createSessionFactory(locator)); ClientSession session = addClientSession(sf.createSession(false, true, true)); session.createQueue(CoreClientOverOneWaySSLTest.QUEUE, CoreClientOverOneWaySSLTest.QUEUE, false); ClientProducer producer = addClientProducer(session.createProducer(CoreClientOverOneWaySSLTest.QUEUE)); ClientMessage message = createTextMessage(session, text); producer.send(message); ClientConsumer consumer = addClientConsumer(session.createConsumer(CoreClientOverOneWaySSLTest.QUEUE)); session.start(); ClientMessage m = consumer.receive(1000); Assert.assertNotNull(m); Assert.assertEquals(text, m.getBodyBuffer().readString()); }