5.5 內存消息存儲-
內存消息存儲將全部的持久化消息放到內存中.內存消息存儲沒有活動的緩存,你必須當心的設置JVM以及內存大小限制,以便代理有足夠的內存容納全部的消息.
當你肯定代理只會存儲有限容量的消息時,內存消息存儲將會變得頗有用,此時消息分發速度將會很是快.可是內存消息存儲通常用於小規模的測試,即,你打算測試與JMS代理的交互,
但不想在代理的消息存儲啓動時多花時間,或者不想在測試結束後捲入清理消息存儲的麻煩中.
5.5.1 配置內存消息存儲
配置內存消息存儲很簡單.配置內存消息存儲是隻須要將broker的persistent屬性值設置爲false
(該屬性默認值爲true).下面是配置ActiveMQ內存消息存儲示例:
<?xml version=」1.0″ encoding=」UTF-8″?>
<beans>
<broker brokerName=」test-broker」 persistent=」false」 xmlns=」http://activemq.apache.org/schema/core」>
<transportConnectors>
<transportConnector uri=」tcp://localhost:61635″/>
</transportConnectors>
</broker>
</beans>
經過設置broker元素的persistent屬性值爲false,有效的通知代理不用持久化消息到長期存儲介質中.
相反的,ActiveMQ代理會將消息保存到內存中,直到消息被消息消費者處理或者ActiveMQ代理關閉.
經過代碼啓動一個使用內存消息存儲的ActiveMQ代理十分容易.下面的經過代碼示例如何
啓動一個使用內存消息存儲的代理:
import org.apache.activemq.broker.BrokerService;
public void createEmbeddedBroker() throws Exception
{
BrokerService broker = new BrokerService();
//configure the broker to use the Memory Store
broker.setPersistent(false);
//Add a transport connector
broker.addConnector(「tcp://localhost:61616」);
//now start the broker
broker.start();
}
注意,上面斜體部分設置broker對象持久化屬性爲false,這跟在前面XML文件中的配置是等價的.
目前沒有必要修改ActiveMQ的消息存儲.若是你打算爲一個應用程序修改消息存儲,推薦使用一個新的
ActiveMQ代理,或者等到你的程序處理了全部已發送的消息,而後關閉ActiveMQ代理,而後配置新的
消息存儲,最後重啓代理.
apache