![](/img/trans.png)
[英]SpringBoot + Hazelcast: sharing single Hazelcast transaction across multiple members
[英]Hazelcast with springboot
我正在研究hazelcast,發現與springboot有一些很好的集成。 但是,我想了解是不是這樣,或者我們是否需要hazelcast服務器來進行產品准備就緒的實現。 有人可以指出一種可以查看設置的資源嗎
您可以在嵌入式模式(Hazelcast群集節點與應用程序客戶端位於同一位置)中運行Hazelcast,也可以在客戶端服務器模式下運行,其中Hazelcast群集與應用程序客戶端分開。 兩者都可以用於生產。 嵌入式通常更容易快速啟動和運行。 如果希望獨立於應用程序客戶端來調整和擴展群集,則“客戶端服務器”可能會更好。
在架構之間切換的應用程序代碼的唯一變化是實例化客戶端的代碼行
Hazelcast.newHazelcastInstance(); // creates an embedded client instance
而
Hazelcast.newHazelcastClient(); // creates a server client instance
我建議參考手冊作為配置選項以及如何實現所需功能的權威信息來源
我建議閱讀參考手冊。 但是我也想分享一下如何在生產服務器上部署hazelcast實例以及如何使用它。
步驟1:創建xml配置文件。
<?xml version="1.0" encoding="UTF-8"?>
<hazelcast
xsi:schemaLocation="http://www.hazelcast.com/schema/config https://hazelcast.com/schema/config/hazelcast-config-3.9.xsd"
xmlns="http://www.hazelcast.com/schema/config"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<group>
<name>"your_service_name"</name>
<password>"service_password_chosen"</password>
</group>
<properties>
<property name="hazelcast.partition.count">83</property>
</properties>
<management-center enabled="true" update-interval="3">--url--</management-center>
<network>
<join>
<multicast enabled="false"/>
<aws enabled="false"></aws>
<tcp-ip enabled="true">
<member>"internal ip of your instance"</member>
<member>"internal ip of other instance</member>
</tcp-ip>
</join>
</network>
<map name="*.ttl3hr">
<max-size policy="USED_HEAP_PERCENTAGE">3</max-size>
<eviction-policy>LFU</eviction-policy>
<statistics-enabled>true</statistics-enabled>
<backup-count>0</backup-count>
<async-backup-count>1</async-backup-count>
<read-backup-data>true</read-backup-data>
<time-to-live-seconds>10800</time-to-live-seconds> <!--3 hours-->
</map>
第2步:添加@EnableCaching
並將一個bean添加到帶有@Configuration
注釋的文件中。
@Bean
public CacheManager cacheManager(HazelcastInstance hazelcastInstance) {
return new com.hazelcast.spring.cache.HazelcastCacheManager(hazelcastInstance);
}
步驟3:然后,您可以使用@Cacheable
注釋對方法進行注釋。
@Cacheable(cacheNames = "your_cache_name")
public POJO foo(Parameter1 parameter1,
Parameter2 parameter2) {
return pojoRepository.findByParameters(parameter1, parameter2);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.