我正在使用jms在两个应用程序之间发送消息,这是接收器应用程序的代码
xmlns amq:"http://activemq.apache.org/schema/core"
amq.'broker'(
useJmx: '${grails.jms.useJmx}',
persistent:'${grails.jms.persistent}',
dataDirectory: '${grails.jms.dataDirectory}'){
amq.'transportConnectors'{
amq.'transportConnector'(uri:'${grails.jms.transportConnector}')
}
}
amqConnectionFactory(ActiveMQConnectionFactory) {
brokerURL = '${grails.jms.brokerUrl}'
}
jmsConnectionFactory(SingleConnectionFactory) { bean ->
targetConnectionFactory = ref(amqConnectionFactory)
}
我可以运行应用程序,但收到错误 “存储限制为102400 mb,而数据目录:/ my-activemq-data / localhost / KahaDB在控制台中只有7438 mb的可用空间”。我只想配置临时内存使用情况,任何人都可以帮助我。感谢
答案 0 :(得分:3)
您使用的是https://grails.org/plugin/activemq插件吗? 如果是这样,我将该功能正好添加到插件中。 该插件允许以下配置选项(只需将它们放在Config.groovy中):
grails.activemq.active = (true|false) default to true
grails.activemq.useJms = (true|false) default to false
grails.activemq.startBroker = (true|false) default to true
grails.activemq.brokerId = (string) default to "brokerId"
grails.activemq.brokerName = (string) default to "localhost"
grails.activemq.persistent = (true|false) default to false
grails.activemq.port = (int) default to 61616
grails.activemq.tempUsageLimit = (size in bytes) defaults to 64Mb
grails.activemq.storeUsageLimit = (size in bytes) defaults to 64Mb
如果你没有使用插件,也许你应该:)
作为参考,这是我用于大多数项目的resources.groovy文件(它依赖于基于应用服务器jndi的JMS服务进行测试和生产,并使用activemq进行开发):
import grails.util.Environment
import org.apache.activemq.ActiveMQConnectionFactory
import org.springframework.jms.connection.SingleConnectionFactory
import org.springframework.jndi.JndiObjectFactoryBean
beans = {
switch(Environment.current) {
case Environment.PRODUCTION:
case Environment.TEST:
jmsConnectionFactory(JndiObjectFactoryBean) {
jndiName = "java:/ConnectionFactory"
}
break
case Environment.DEVELOPMENT:
jmsConnectionFactory(SingleConnectionFactory) {
targetConnectionFactory = { ActiveMQConnectionFactory cf ->
brokerURL = 'vm://localhost'
}
}
break
}
}
我在使用ActiveMQ和activemq插件时遇到了同样的问题,因此我发出了一个拉取请求,添加了这些配置选项,并将它们设置为64Mb的更合理的默认值(用于开发)。
如果您使用该插件,您只需将其添加到您的BuildConfig插件部分,它应该可以正常工作而无需进一步配置,只需在config / spring中的resources.groovy。
无论如何,如果您需要其中任何一个,我描述的选项应该进入Config.groovy。
答案 1 :(得分:1)
最后,我解决了我的问题。这是更新后的resource.groovy
activeMQTempUsage(TempUsage) {
activeMQTempUsage.limit = 1024 * 1024 * 1024
}
activeMQStoreUsage(StoreUsage) {
activeMQStoreUsage.limit = 1024 * 1024 * 1024
}
activeMQSystemUsage(SystemUsage){
activeMQSystemUsage.tempUsage = ref('activeMQTempUsage')
activeMQSystemUsage.storeUsage = ref('activeMQStoreUsage')
}
tcpConnector(TransportConnector,uri:'tcp://localhost:61616') {
}
connectors(ArrayList,[ref('tcpConnector')]){
}
myBrokerService(XBeanBrokerService){bean->
myBrokerService.useJmx = false
myBrokerService.persistent = true
myBrokerService.dataDirectory = 'my-activemq-data'
myBrokerService.systemUsage = ref('activeMQSystemUsage')
myBrokerService.transportConnectors = ref('connectors')
}
amqConnectionFactory(ActiveMQConnectionFactory) {
brokerURL = 'vm://localhost'
}
jmsConnectionFactory(SingleConnectionFactory) { bean ->
targetConnectionFactory = ref(amqConnectionFactory)
}
使用XbeanBrokerService属性我们可以实现这一点,如果我们想要添加更多配置,我们可以使用XbeanBrokerService的属性添加,如上所述。