繁体   English   中英

无法从外部连接到Jetty中嵌入的ActiveMQ代理

[英]Cannot connect externally to an ActiveMQ broker embedded in Jetty

我有一个启动嵌入式ActiveMQ代理的码头。 我正在尝试使用JMSToolBox连接到它,但出现以下异常:

Transport Connection to: tcp://127.0.0.1:44523 failed: java.io.IOException: Unknown data type: 97

我的代码如下:

    File dataFileDir = new File("target/amq-in-action/kahadb");
    KahaDBStore kaha = new KahaDBStore();
    kaha.setDirectory(dataFileDir);
    kaha.setJournalMaxFileLength(1024 * 1204 * 100);
    kaha.setIndexWriteBatchSize(100);
    kaha.setEnableIndexWriteAsync(false);

    List<AuthenticationUser> users = new ArrayList<AuthenticationUser>();
    users.add(new AuthenticationUser(USER_NAME, PWD, "users,users_write"));
    SimpleAuthenticationPlugin simpleAuthenticationPlugin = new SimpleAuthenticationPlugin(users);
    simpleAuthenticationPlugin.setAnonymousAccessAllowed(false);

    List<DestinationMapEntry> authorizationEntries = new ArrayList<>();
    // giving permission to read the queue for users groups 
    AuthorizationEntry authorizationEntry = new AuthorizationEntry();
    authorizationEntry.setRead("users");
    authorizationEntry.setWrite("admins,users_write");
    authorizationEntry.setAdmin("admins");
    authorizationEntry.setQueue("Provisioning");
    authorizationEntries.add(authorizationEntry);
    // "Note that full access rights should generally be given to the ActiveMQ.Advisory destinations because by default an ActiveMQConnection uses destination advisors to get early knowledge of temp destination creation and deletion." -> http://activemq.apache.org/security.html
    authorizationEntry = new AuthorizationEntry();
    authorizationEntry.setRead("guests,users");
    authorizationEntry.setWrite("guests,users");
    authorizationEntry.setAdmin("guests,users");
    authorizationEntry.setTopic("ActiveMQ.Advisory.>");
    authorizationEntries.add(authorizationEntry);       
    AuthorizationMap authorizationMap = new DefaultAuthorizationMap(authorizationEntries);
    AuthorizationPlugin authorizationPlugin = new AuthorizationPlugin(authorizationMap);

    // creating the broker service
    broker = new BrokerService();
    broker.setPersistenceAdapter(kaha);
    broker.setUseJmx(false);
    broker.setPlugins(new BrokerPlugin[]{simpleAuthenticationPlugin, authorizationPlugin});
    broker.addConnector("tcp://localhost:61616");

    ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("vm://localhost");
    new Resource(null, "java:/ConnectionFactory", connectionFactory);
    broker.start();

我想我应该能够从外部工具连接到嵌入式队列。
任何想法?

谢谢,
V.

对于JMSToolBox ,JMX必须处于活动状态,因此请更改broker.setUseJmx(false);
通过broker.setUseJmx(true); // This is the default.. broker.setUseJmx(true); // This is the default..

另外,您可能对具有正在运行的示例的JMSToolBox问题感兴趣

丹尼斯

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM