/** * Replaces class name and parameter names to HornetQ values. */ private static TransportConfiguration convertTransport(TransportConfiguration tc) { if (tc != null) { String className = tc.getFactoryClassName().replace("org.apache.activemq.artemis", "org.hornetq").replace("ActiveMQ", "HornetQ"); return new TransportConfiguration(className, convertParameters(tc.getParams()), tc.getName()); } return tc; }
ConnectorFactory backupConnectorFactory = instantiateConnectorFactory(backupConfig.getFactoryClassName()); if (currentConnectorConfig.equals(connectorConfig) || connectorConfig == null) { ConnectorFactory lastConnectorFactory = instantiateConnectorFactory(connectorConfig.getFactoryClassName());
@Override public void decodeRest(final ActiveMQBuffer buffer) { exit = buffer.readBoolean(); nodeID = buffer.readString(); if (!exit) { boolean hasLive = buffer.readBoolean(); TransportConfiguration a; if (hasLive) { a = new TransportConfiguration(); a.decode(buffer); } else { a = null; } boolean hasBackup = buffer.readBoolean(); TransportConfiguration b; if (hasBackup) { b = new TransportConfiguration(); b.decode(buffer); } else { b = null; } pair = new Pair<>(a, b); last = buffer.readBoolean(); } }
private void updateTransportConfiguration(TransportConfiguration connector) { if (connector != null) { String factoryClassName = connector.getFactoryClassName(); if ("org.hornetq.core.remoting.impl.netty.NettyConnectorFactory".equals(factoryClassName)) { connector.setFactoryClassName(NettyConnectorFactory.class.getName()); } } }
public static boolean isSameHost(TransportConfiguration tc1, TransportConfiguration tc2) { if (NettyConnectorFactory.class.getName().equals(tc1.getFactoryClassName())) { String host1 = tc1.getParams().get("host") != null ? tc1.getParams().get("host").toString() : TransportConstants.DEFAULT_HOST; String host2 = tc2.getParams().get("host") != null ? tc2.getParams().get("host").toString() : TransportConstants.DEFAULT_HOST; String port1 = String.valueOf(tc1.getParams().get("port") != null ? tc1.getParams().get("port") : TransportConstants.DEFAULT_PORT); String port2 = String.valueOf(tc2.getParams().get("port") != null ? tc2.getParams().get("port") : TransportConstants.DEFAULT_PORT); return host1.equals(host2) && port1.equals(port2); } else if ("org.apache.activemq.artemis.core.remoting.impl.invm.InVMConnectorFactory".equals(tc1.getFactoryClassName())) { String serverId1 = tc1.getParams().get("serverId") != null ? tc1.getParams().get("serverId").toString() : "0"; String serverId2 = tc2.getParams().get("serverId") != null ? tc2.getParams().get("serverId").toString() : "0"; return serverId1.equals(serverId2); } return false; }
ServerLocator locator = ActiveMQClient.createServerLocatorWithoutHA(new TransportConfiguration(INVM_CONNECTOR_FACTORY)); locator.setBlockOnNonDurableSend(true); ClientSession session = sf.createSession(false, true, true); session.start(); final SimpleString queueName = new SimpleString("DuplicateDetectionTestQueue"); session.createQueue(queueName, queueName, null, true); ClientProducer producer = session.createProducer(queueName); ClientMessage message = session.createMessage(true); message.putStringProperty(Message.HDR_DUPLICATE_DETECTION_ID, SimpleString.toSimpleString("DUPL-" + i)); producer.send(message); session.commit(); sf.close(); session.close(); locator.close(); server.stop(); server.start(); locator = ActiveMQClient.createServerLocatorWithoutHA(new TransportConfiguration(INVM_CONNECTOR_FACTORY));
public static void main(final String[] args) throws Exception { try { CrashClient.log.debug("args = " + Arrays.asList(args)); ServerLocator locator = ActiveMQClient.createServerLocatorWithoutHA(new TransportConfiguration(NettyConnectorFactory.class.getName())); locator.setClientFailureCheckPeriod(ClientCrashTest.PING_PERIOD); locator.setConnectionTTL(ClientCrashTest.CONNECTION_TTL); ClientSessionFactory sf = locator.createSessionFactory(); ClientSession session = sf.createSession(false, true, true); ClientProducer producer = session.createProducer(ClientCrashTest.QUEUE); // it has to be durable otherwise it may race dying before the client is killed ClientMessage message = session.createMessage(ActiveMQTextMessage.TYPE, true, 0, System.currentTimeMillis(), (byte) 1); message.getBodyBuffer().writeString(ClientCrashTest.MESSAGE_TEXT_FROM_CLIENT); producer.send(message); // exit without closing the session properly System.exit(OK); } catch (Throwable t) { CrashClient.log.error(t.getMessage(), t); System.exit(NOT_OK); } }
@Test public void testTwoWaySSL() throws Exception { String text = RandomUtil.randomString(); tc.getParams().put(TransportConstants.SSL_ENABLED_PROP_NAME, true); tc.getParams().put(TransportConstants.SSL_PROVIDER, TransportConstants.OPENSSL_PROVIDER); tc.getParams().put(TransportConstants.TRUSTSTORE_PROVIDER_PROP_NAME, storeType); tc.getParams().put(TransportConstants.KEYSTORE_PROVIDER_PROP_NAME, storeType); tc.getParams().put(TransportConstants.TRUSTSTORE_PATH_PROP_NAME, CLIENT_SIDE_TRUSTSTORE); tc.getParams().put(TransportConstants.TRUSTSTORE_PASSWORD_PROP_NAME, PASSWORD); tc.getParams().put(TransportConstants.KEYSTORE_PATH_PROP_NAME, CLIENT_SIDE_KEYSTORE); tc.getParams().put(TransportConstants.KEYSTORE_PASSWORD_PROP_NAME, PASSWORD); //tc.getParams().put(TransportConstants.ENABLED_CIPHER_SUITES_PROP_NAME, "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256"); server.getRemotingService().addIncomingInterceptor(new MyInterceptor()); ServerLocator locator = addServerLocator(ActiveMQClient.createServerLocatorWithoutHA(tc)); ClientSessionFactory sf = createSessionFactory(locator); ClientSession session = sf.createSession(false, true, true); session.createQueue(CoreClientOverTwoWayOpenSSLTest.QUEUE, CoreClientOverTwoWayOpenSSLTest.QUEUE, false); ClientProducer producer = session.createProducer(CoreClientOverTwoWayOpenSSLTest.QUEUE); ClientMessage message = createTextMessage(session, text); producer.send(message); ClientConsumer consumer = session.createConsumer(CoreClientOverTwoWayOpenSSLTest.QUEUE); session.start(); ClientMessage m = consumer.receive(1000); Assert.assertNotNull(m); Assert.assertEquals(text, m.getBodyBuffer().readString()); }
server2 = createBackupActiveMQServer(2, server2Params, isNetty(), 0, nodeManager); TransportConfiguration server2tc = new TransportConfiguration(getConnector(), server2Params, "server2tc"); connectors.put(server2tc.getName(), server2tc); server0.getConfiguration().setConnectorConfigurations(connectors); server1.getConfiguration().setConnectorConfigurations(connectors); server0.getConfiguration().setBridgeConfigurations(bridgeConfigs); server0.fail(true); locator = addServerLocator(ActiveMQClient.createServerLocatorWithHA(server2tc)).setReconnectAttempts(100); ClientSessionFactory csf0 = addSessionFactory(locator.createSessionFactory(server2tc)); session0 = csf0.createSession(false, true, true); ClientSessionFactory csf2 = addSessionFactory(locator.createSessionFactory(server2tc)); session2 = csf2.createSession(false, true, true); ClientProducer prod0 = session0.createProducer(testAddress); ClientConsumer cons2 = session2.createConsumer(queueName); session2.start(); SimpleString propKey = new SimpleString("propkey");
protected void scaleDown(ScaleDownHandler handler) throws Exception { SimpleString address = new SimpleString("testQueue"); HashMap<String, Object> params = new HashMap<>(); params.put(TransportConstants.SERVER_ID_PROP_NAME, "2"); Configuration config = createDefaultInVMConfig(2).clearAcceptorConfigurations().addAcceptorConfiguration(new TransportConfiguration(InVMAcceptorFactory.class.getName(), params)).setSecurityEnabled(false); ActiveMQServer server2 = addServer(ActiveMQServers.newActiveMQServer(config, null, true)); this.conf.clearConnectorConfigurations().addConnectorConfiguration("server2-connector", new TransportConfiguration(INVM_CONNECTOR_FACTORY, params)); locator.close(); locator = addServerLocator(ActiveMQClient.createServerLocatorWithoutHA(new TransportConfiguration(INVM_CONNECTOR_FACTORY, params))); csf = createSessionFactory(locator); session = csf.createSession(); session.start(); ClientConsumer consumer = session.createConsumer(address); for (int i = 0; i < 100; i++) {
server0 = createActiveMQServer(0, isNetty(), server0Params); TransportConfiguration server0tc = new TransportConfiguration(getConnector(), server0Params, "server0tc"); server0.getConfiguration().setConnectorConfigurations(connectors); server0.getConfiguration().setBridgeConfigurations(bridgeConfigs); server0.getConfiguration().setQueueConfigurations(queueConfigs0); ClientSessionFactory csf0 = locator.createSessionFactory(server0tc); session0 = csf0.createSession(false, true, true); ClientSessionFactory csf1 = locator.createSessionFactory(server1tc); session1 = csf1.createSession(false, true, true); ClientProducer prod0 = session0.createProducer(testAddress); session1.start(); Bridge bridge = server0.getClusterManager().getBridges().get(bridgeName); SimpleString propKey = new SimpleString("propkey"); final Queue queue = (Queue) server0.getPostOffice().getBinding(new SimpleString(queueName)).getBindable(); ClientMessage message = session0.createMessage(false); message.putIntProperty(propKey, i);
params.put(TransportConstants.NEED_CLIENT_AUTH_PROP_NAME, true); server.getConfiguration().addAcceptorConfiguration(new TransportConfiguration(NETTY_ACCEPTOR_FACTORY, params)); server.start(); Set<Role> roles = new HashSet<>(); roles.add(role); server.getSecurityRepository().addMatch(ActiveMQDefaultConfiguration.getDefaultManagementNotificationAddress().toString(), roles); TransportConfiguration tc = new TransportConfiguration(NETTY_CONNECTOR_FACTORY); tc.getParams().put(TransportConstants.SSL_ENABLED_PROP_NAME, true); tc.getParams().put(TransportConstants.TRUSTSTORE_PATH_PROP_NAME, "client-side-truststore.jks"); tc.getParams().put(TransportConstants.TRUSTSTORE_PASSWORD_PROP_NAME, "secureexample"); tc.getParams().put(TransportConstants.KEYSTORE_PATH_PROP_NAME, "client-side-keystore.jks"); tc.getParams().put(TransportConstants.KEYSTORE_PASSWORD_PROP_NAME, "secureexample"); adminSession = sf.createSession(true, true, 1); adminSession.start(); adminSession.createTemporaryQueue(ActiveMQDefaultConfiguration.getDefaultManagementNotificationAddress(), notifQueue); notifConsumer = adminSession.createConsumer(notifQueue);
public static void main(final String[] args) throws Exception { if (args.length != 2) { throw new Exception("require 2 arguments: queue name + message text"); } String queueName = args[0]; String messageText = args[1]; try { ServerLocator locator = ActiveMQClient.createServerLocatorWithoutHA(new TransportConfiguration(NettyConnectorFactory.class.getName())); ClientSessionFactory sf = locator.createSessionFactory(); ClientSession session = sf.createSession(false, true, true); ClientProducer producer = session.createProducer(queueName); ClientConsumer consumer = session.createConsumer(queueName); ClientMessage message = session.createMessage(ActiveMQTextMessage.TYPE, false, 0, System.currentTimeMillis(), (byte) 1); message.getBodyBuffer().writeString(messageText); producer.send(message); session.start(); // block in receiving for 5 secs, we won't receive anything consumer.receive(5000); // this should silence any non-daemon thread and allow for graceful exit session.close(); System.exit(0); } catch (Throwable t) { GracefulClient.log.error(t.getMessage(), t); System.exit(1); } }
@Test public void testCONSUMER_CREATED() throws Exception { SimpleString queue = RandomUtil.randomSimpleString(); SimpleString address = RandomUtil.randomSimpleString(); Role role = new Role("notif", true, true, true, true, false, true, true, true, true, true); Set<Role> roles = new HashSet<>(); roles.add(role); server.getSecurityRepository().addMatch("#", roles); TransportConfiguration tc = new TransportConfiguration(NETTY_CONNECTOR_FACTORY); tc.getParams().put(TransportConstants.SSL_ENABLED_PROP_NAME, true); tc.getParams().put(TransportConstants.TRUSTSTORE_PATH_PROP_NAME, "client-side-truststore.jks"); tc.getParams().put(TransportConstants.TRUSTSTORE_PASSWORD_PROP_NAME, "secureexample"); tc.getParams().put(TransportConstants.KEYSTORE_PATH_PROP_NAME, "client-side-keystore.jks"); tc.getParams().put(TransportConstants.KEYSTORE_PASSWORD_PROP_NAME, "secureexample"); ServerLocator locator = addServerLocator(ActiveMQClient.createServerLocatorWithoutHA(tc)); ClientSessionFactory sf = addSessionFactory(createSessionFactory(locator)); ClientSession guestSession = sf.createSession("guest", "guest", false, true, true, false, 1); guestSession.createQueue(address, RoutingType.ANYCAST, queue, true); SSLSecurityNotificationTest.flush(notifConsumer); guestSession.createConsumer(queue); ClientMessage[] notifications = SecurityNotificationTest.consumeMessages(1, notifConsumer); Assert.assertEquals(CONSUMER_CREATED.toString(), notifications[0].getObjectProperty(ManagementHelper.HDR_NOTIFICATION_TYPE).toString()); Assert.assertEquals("guest", notifications[0].getObjectProperty(ManagementHelper.HDR_USER).toString()); Assert.assertEquals("first", notifications[0].getObjectProperty(ManagementHelper.HDR_VALIDATED_USER).toString()); Assert.assertEquals(address.toString(), notifications[0].getObjectProperty(ManagementHelper.HDR_ADDRESS).toString()); Assert.assertEquals("CN=ActiveMQ Artemis Client, OU=Artemis, O=ActiveMQ, L=AMQ, ST=AMQ, C=AMQ", notifications[0].getObjectProperty(ManagementHelper.HDR_CERT_SUBJECT_DN).toString()); guestSession.close(); }
ServerLocator locator = HornetQClient.createServerLocatorWithoutHA(new TransportConfiguration(InVMConnectorFactory.class.getName())); ClientSessionFactory sf = locator.createSessionFactory(); ClientSession session = sf.createSession(false, true, true); session.start(); ClientRequestor requestor = new ClientRequestor(session, "jms.queue.hornetq.management"); ClientMessage message = session.createMessage(false); ManagementHelper.putAttribute(message, ResourceNames.CORE_SERVER, "queueNames"); ClientMessage reply = requestor.request(message); Object queueNames = ManagementHelper.getResult(reply);
@Override public void decodeRest(final ActiveMQBuffer buffer) { exit = buffer.readBoolean(); nodeID = buffer.readString(); uniqueEventID = buffer.readLong(); if (!exit) { boolean hasLive = buffer.readBoolean(); TransportConfiguration a; if (hasLive) { a = new TransportConfiguration(); a.decode(buffer); } else { a = null; } boolean hasBackup = buffer.readBoolean(); TransportConfiguration b; if (hasBackup) { b = new TransportConfiguration(); b.decode(buffer); } else { b = null; } pair = new Pair<>(a, b); last = buffer.readBoolean(); } if (buffer.readableBytes() > 0) { backupGroupName = buffer.readNullableString(); } }
@Test public void testNoFailureNoPinging() throws Exception { TransportConfiguration transportConfig = new TransportConfiguration(INVM_CONNECTOR_FACTORY); ServerLocator locator = addServerLocator(ActiveMQClient.createServerLocatorWithoutHA(transportConfig)); locator.setClientFailureCheckPeriod(-1); locator.setConnectionTTL(-1); ClientSessionFactory csf = createSessionFactory(locator); ClientSession session = csf.createSession(false, true, true); session.addFailureListener(clientListener); Set<RemotingConnection> conns = server.getRemotingService().getConnections(); serverConn = server.getRemotingService().getConnections().iterator().next(); } else { RemotingConnection serverConn2 = server.getRemotingService().getConnections().iterator().next(); session.close(); csf.close(); locator.close();
@Test public void testDualAuthentication() throws Exception { String text = RandomUtil.randomString(); tc.getParams().put(TransportConstants.SSL_ENABLED_PROP_NAME, true); tc.getParams().put(TransportConstants.TRUSTSTORE_PATH_PROP_NAME, CLIENT_SIDE_TRUSTSTORE); tc.getParams().put(TransportConstants.TRUSTSTORE_PASSWORD_PROP_NAME, PASSWORD); tc.getParams().put(TransportConstants.KEYSTORE_PATH_PROP_NAME, CLIENT_SIDE_KEYSTORE); tc.getParams().put(TransportConstants.KEYSTORE_PASSWORD_PROP_NAME, PASSWORD); tc.getParams().put(TransportConstants.PORT_PROP_NAME, "61617"); ServerLocator producerLocator = addServerLocator(ActiveMQClient.createServerLocatorWithoutHA(tc)); ClientSessionFactory producerSessionFactory = createSessionFactory(producerLocator); ClientSession producerSession = producerSessionFactory.createSession(false, true, true); producerSession.createQueue(DualAuthenticationTest.QUEUE, DualAuthenticationTest.QUEUE, false); ClientProducer producer = producerSession.createProducer(DualAuthenticationTest.QUEUE); ClientMessage message = createTextMessage(producerSession, text); producer.send(message); ServerLocator consumerLocator = addServerLocator(ActiveMQClient.createServerLocator("tcp://localhost:61616")); ClientSessionFactory consumerSessionFactory = createSessionFactory(consumerLocator); ClientSession consumerSession = consumerSessionFactory.createSession("consumer", "consumerPassword", false, true, true, consumerLocator.isPreAcknowledge(), consumerLocator.getAckBatchSize()); ClientConsumer consumer = consumerSession.createConsumer(DualAuthenticationTest.QUEUE); consumerSession.start(); Message m = consumer.receive(1000); Assert.assertNotNull(m); Assert.assertEquals(text, m.getBodyBuffer().readString()); }
@Test public void testNotifications() throws Exception { TransportConfiguration acceptorConfig = new TransportConfiguration(InVMAcceptorFactory.class.getName(), new HashMap<String, Object>(), RandomUtil.randomString()); TransportConfiguration acceptorConfig2 = new TransportConfiguration(NettyAcceptorFactory.class.getName(), new HashMap<String, Object>(), RandomUtil.randomString()); Configuration config = createBasicConfig().addAcceptorConfiguration(acceptorConfig).addAcceptorConfiguration(acceptorConfig2); ActiveMQServer service = createServer(false, config); service.setMBeanServer(mbeanServer); service.start(); AcceptorControl acceptorControl = createManagementControl(acceptorConfig2.getName()); SimpleNotificationService.Listener notifListener = new SimpleNotificationService.Listener(); service.getManagementService().addNotificationListener(notifListener); Assert.assertEquals(0, notifListener.getNotifications().size()); acceptorControl.stop(); Assert.assertEquals(usingCore() ? 5 : 1, notifListener.getNotifications().size()); Notification notif = notifListener.getNotifications().get(usingCore() ? 2 : 0); Assert.assertEquals(CoreNotificationType.ACCEPTOR_STOPPED, notif.getType()); Assert.assertEquals(NettyAcceptorFactory.class.getName(), notif.getProperties().getSimpleStringProperty(new SimpleString("factory")).toString()); acceptorControl.start(); Assert.assertEquals(usingCore() ? 10 : 2, notifListener.getNotifications().size()); notif = notifListener.getNotifications().get(usingCore() ? 7 : 1); Assert.assertEquals(CoreNotificationType.ACCEPTOR_STARTED, notif.getType()); Assert.assertEquals(NettyAcceptorFactory.class.getName(), notif.getProperties().getSimpleStringProperty(new SimpleString("factory")).toString()); }
@Before public void setup() throws Exception { server = createServer(true); server.start(); server.waitForActivation(10, TimeUnit.SECONDS); ServerLocator sl = ActiveMQClient.createServerLocatorWithoutHA(new TransportConfiguration(INVM_CONNECTOR_FACTORY)); sessionFactory = sl.createSessionFactory(); addSessionFactory(sessionFactory); }