如何在 activemq grails 应用程序中配置 tempusage
How to configure tempusage in activemq grails app
我正在使用 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)
}
我可以 运行 该应用程序,但出现如下错误
"Store limit is 102400 mb, whilst the data directory: /my-activemq-data/localhost/KahaDB only has 7438 mb of usable space" 在控制台中。我只想配置临时内存使用情况,谁能帮我解决这个问题。谢谢
您使用的是 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。
终于,我找到了解决问题的方法。这是更新后的 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 的属性来添加。
我正在使用 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)
}
我可以 运行 该应用程序,但出现如下错误 "Store limit is 102400 mb, whilst the data directory: /my-activemq-data/localhost/KahaDB only has 7438 mb of usable space" 在控制台中。我只想配置临时内存使用情况,谁能帮我解决这个问题。谢谢
您使用的是 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。
终于,我找到了解决问题的方法。这是更新后的 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 的属性来添加。