阿帕奇跨域_阿帕奇骆驼遇见Redis
阿帕奇跨域
鍵值商店的蘭博基尼
Camel是最好的面包集成框架,在本文中,我將向您展示如何通過(guò)利用另一個(gè)出色的項(xiàng)目Redis使它更加強(qiáng)大。
Camel 2.11即將發(fā)布,具有許多新功能,錯(cuò)誤修復(fù)和組件。 這些新組件中的幾個(gè)是我創(chuàng)作的, redis-component是我最喜歡的組件 。 Redis – ligth鍵/值存儲(chǔ)區(qū)是一款出色的意大利軟件,專為提高速度而設(shè)計(jì)(與Lamborghini相同– Lamborghini是一款兩人座的意大利汽車,專為 速度)。 Redis用C語(yǔ)言編寫,并且具有接近金屬性質(zhì)的內(nèi)存,其表現(xiàn)非常出色(Lamborgini的座右銘是“ Closer to the Road”)。 由于鍵可以包含字符串,哈希,列表和排序集,因此Redis通常被稱為數(shù)據(jù)結(jié)構(gòu)服務(wù)器。 快速輕巧的數(shù)據(jù)結(jié)構(gòu)服務(wù)器對(duì)于軟件工程師來(lái)說(shuō)就像是一輛超級(jí)跑車,它只是飛行而已。 如果您想了解有關(guān)Redis和蘭博基尼獨(dú)特性能特征的更多信息,那么您會(huì)發(fā)現(xiàn)自己。
Redis入門很容易:下載,制作和啟動(dòng)Redis服務(wù)器。 完成這些步驟之后,您就可以從Camel應(yīng)用程序中使用它了。 該組件在內(nèi)部使用Spring Data ,而后者又使用Jedis驅(qū)動(dòng)程序,但有可能切換到其他Redis驅(qū)動(dòng)程序。 以下是一些適合使用camel-redis組件的用例:
冪等存儲(chǔ)庫(kù)
冪等一詞在數(shù)學(xué)中用于描述一個(gè)函數(shù),如果將其應(yīng)用到其自身上會(huì)產(chǎn)生相同的結(jié)果。 在“消息傳遞”中,無(wú)論是一次還是多次接收,此概念都將轉(zhuǎn)換為具有相同效果的消息。 在Camel中,此模式是使用IdempotentConsumer類實(shí)現(xiàn)的,該類使用Expression計(jì)算給定消息交換的唯一消息ID字符串。 然后可以在IdempotentRepository中查找此ID,以查看是否以前已看到它; 如果消息已被消耗; 如果不是,則處理消息并將ID添加到存儲(chǔ)庫(kù)。 RedisIdempotentRepository使用集合結(jié)構(gòu)來(lái)存儲(chǔ)和檢查現(xiàn)有ID。
<bean id="idempotentRepository" class="org.apache.camel.component.redis.processor.idempotent.RedisIdempotentRepository"> <constructor-arg value="test-repo"/> </bean><route> <from uri="direct:start"/> <idempotentConsumer messageIdRepositoryRef="idempotentRepository"> <simple>${in.body.id}</simple> <to uri="mock:result"/> </idempotentConsumer> </route>快取
Redis的主要用途之一是作為L(zhǎng)RU緩存 。 它可以將內(nèi)存中的數(shù)據(jù)存儲(chǔ)為Memcached,也可以進(jìn)行調(diào)整以將持久的刷新數(shù)據(jù)存儲(chǔ)到日志文件中,如果節(jié)點(diǎn)重新啟動(dòng)則可以重播。
- volatile-lru刪除具有過(guò)期集的密鑰中的一個(gè),以嘗試刪除最近未使用的密鑰。
- volatile-ttl刪除具有過(guò)期集的密鑰,并嘗試刪除剩余生存時(shí)間短的密鑰。
- volatile-random從具有到期集的密鑰中刪除一個(gè)隨機(jī)密鑰。
- allkeys-lru與volatile-lru類似,但是將刪除每種密鑰,包括普通密鑰或具有過(guò)期集的密鑰。
- allkeys-random和volatile-random一樣,但是會(huì)刪除各種鍵,包括普通鍵和具有過(guò)期集的鍵。
在為Redis服務(wù)器配置正確的策略并使其運(yùn)行后,您需要執(zhí)行的操作是SET和GET:
<?xml version="1.0" encoding="UTF-8"?> <route> <from uri="direct:start"/> <setHeader headerName="CamelRedis.Command"> <constant>SET</constant> </setHeader> <setHeader headerName="CamelRedis.Key"> <constant>keyOne</constant> </setHeader> <setHeader headerName="CamelRedis.Value"> <constant>valueOne</constant> </setHeader> <to uri="redis://localhost:6379"/> </route>與Redis的Interap發(fā)布/訂閱
駱駝具有在路線之間進(jìn)行交互的各種組件:
direct :在同一駱駝上下文中提供直接,同步的調(diào)用。
seda :異步行為,再次在同一駱駝上下文中在BlockingQueue上交換消息。
vm :類似于seda的異步行為,但只要它們?cè)谕粋€(gè)JVM中,它還支持跨CamelContext的通信。 復(fù)雜的應(yīng)用程序通常包括在單獨(dú)的計(jì)算機(jī)上運(yùn)行的多個(gè)獨(dú)立的Camel實(shí)例。 對(duì)于這種情況,Camel提供了jms,activemq以及AWS SNS與SQS的組合,用于實(shí)例之間的消息傳遞。 Redis為發(fā)布/訂閱消息范式提供了一個(gè)更簡(jiǎn)單的解決方案。 訂閱者通過(guò)指定頻道名稱或使用模式匹配從多個(gè)頻道接收消息來(lái)訂閱一個(gè)或多個(gè)頻道。 然后,發(fā)布者將消息發(fā)布到頻道,然后Redis確保它到達(dá)所有匹配的訂閱者。
其他用法
保證的交付 :駱駝使用JMS,File,JPA和其他一些組件來(lái)支持此EIP。 Redis可以通過(guò)其事務(wù)支持用作輕量級(jí)鍵值持久存儲(chǔ)。
通過(guò)EIP模式中的“ 聲明檢查” ,您可以用聲明檢查(唯一密鑰)替換消息內(nèi)容,該聲明檢查可在以后用于檢索消息內(nèi)容。 消息內(nèi)容可以臨時(shí)存儲(chǔ)在Redis中。
Redis在實(shí)現(xiàn)計(jì)數(shù)器,排行榜,標(biāo)記系統(tǒng)和更多功能方面也非常受歡迎。 現(xiàn)在,有了您的腰帶上的兩把瑞士軍刀,要進(jìn)行的集成僅受您的想象力限制。
參考: Apache Camel在OFBIZian博客上會(huì)見了我們的JCG合作伙伴 Bilgin Ibryam的Redis 。
翻譯自: https://www.javacodegeeks.com/2013/03/apache-camel-meets-redis.html
阿帕奇跨域
總結(jié)
以上是生活随笔為你收集整理的阿帕奇跨域_阿帕奇骆驼遇见Redis的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 电脑数据丢失如何恢复电脑文件丢失如何找回
- 下一篇: 台式电脑的主机选择家用台式电脑如何选购