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