我有一个启动嵌入式ActiveMQ代理的Jetty。我正在尝试用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。
发布于 2018-10-23 02:33:20
对于JMSToolBox,JMX必须处于活动状态,因此请更改broker.setUseJmx(false);
作者:broker.setUseJmx(true); // This is the default..
此外,您可能会对this JMSToolBox issue感兴趣,因为它有一个运行示例
丹尼斯
https://stackoverflow.com/questions/52718034
复制相似问题