阿帕奇跨域

键值商店的兰博基尼

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确保它到达所有匹配的订阅者。

<?xml version="1.0" encoding="UTF-8"?>
<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
<route startupOrder="1">
<from uri="redis://localhost:6379?command=SUBSCRIBE&channels=testChannel"/>
<to uri="mock:result"/>
</route><route startupOrder="2">
<from uri="direct:start"/>
<setHeader headerName="CamelRedis.Command">
<constant>PUBLISH</constant>
</setHeader>
<setHeader headerName="CamelRedis.CHANNEL">
<constant>testChannel</constant>
</setHeader>
<setHeader headerName="CamelRedis.MESSAGE">
<constant>Test Message</constant>
</setHeader>
<to uri="redis://localhost:6379"/>
</route>
</camelContext>

其他用法

保证的交付 :骆驼使用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相关推荐

  1. 阿帕奇跨域_阿帕奇骆驼备忘单

    阿帕奇跨域 轮询一个空目录(并发送一个空消息,正文为空): from('file://temp?sendEmptyMessageWhenIdle=true') 停止路线: .process(new P ...

  2. 阿帕奇跨域_阿帕奇光束

    阿帕奇跨域 Apache Beam是一个开放源代码统一模型,用于定义批处理和流数据并行处理管道. 使用一种开源的Beam SDK,您可以构建一个定义管道的程序. 然后,该管道由Beam支持的分布式处理 ...

  3. 阿帕奇跨域_阿帕奇齿轮泵

    阿帕奇跨域 Apache Gearpump是一个实时大数据流引擎. 它于2014年中期在GitHub上作为一个开源项目在英特尔构想,并于2016年3月8日进入Apache孵化.Gearpump的名称是 ...

  4. 阿帕奇跨域_阿帕奇Qpid 0.6

    阿帕奇跨域 Apache Qpid团队已发布了0.6版. Apache Qpid是跨平台企业消息传递解决方案,它实现了高级消息队列协议. 它提供了用C ++和Java编写的代理,以及C ++,Java ...

  5. webmvcconfigurer配置跨域_为什么加了 Spring Security 会导致 Spring Boot 跨域失效呢?...

    点击上方 IT牧场 ,选择 置顶或者星标 技术干货每日送达 作者:欧阳我去 链接:https://segmentfault.com/a/1190000019485883 作为一个后端开发,我们经常遇到 ...

  6. axios get怎么还会显示跨域_在Vue中如何使用axios跨域访问数据

    最近在项目中需要用到axios,所以就恶补一下这个axios到底是什么东东.越来它是vue-resource的替代品,官网也说了,以后都用axios, vue-resource不在维护.那么这个axi ...

  7. 网关 跨域_好文推荐:微服务网关实战—Spring Cloud Gateway

    作者:博云BoCloud| 前言 作为Netflix Zuul的替代者,Spring Cloud Gateway是一款非常实用的微服务网关,在Spring Cloud微服务架构体系中发挥非常大的作用. ...

  8. anna 跨域_认识anna morgiel的Android初级软件工程师和热情的社区组织者

    anna 跨域 Anna Morgiel is Junior Software Engineer for Android at Scout24. She is also volunteering as ...

  9. vue如何配置服务器端跨域_客户端(vue框架)与服务器(koa框架)通信及服务器跨域配置详解...

    本篇博客主要说明: 前后端框架(本例中是vue和koa)如何发送请求?获取响应? 以及跨域问题如何解决? vue部分: import App from './App.vue' import Axios ...

最新文章

  1. Java项目:资源下载工具(java+swing)
  2. 推荐65个以自然风光为背景的UI设计
  3. 知识O2O:数字与文明的交汇点?
  4. 通过仿真和综合认识D触发器(Verilog HDL语言描述D触发器)
  5. 前端学习(2634):修改webstrom颜色
  6. jquery的全选和多选操作
  7. 补习系列(22)-全面解读 Spring Profile 的用法
  8. python简单的爬虫程序代码_简单的电子邮件爬虫Python代码
  9. Mysql 5.6 在性能、可伸缩性、可用性方面的新突破二
  10. 编译Android内核 For nexus 5 以及绕过Android的反调试
  11. 怎么更改计算机信息,修改电脑oem信息的方法 如何修改oem电脑配置信息
  12. swiper使用笔记-禁止某个div或slide左右切换
  13. 使用云服务器的几个安全防护技巧
  14. 发布Flask项目到服务器
  15. Facebook加好友被禁止,请问什么时候被解禁
  16. 这样学习Linux,楼下王大爷都已经入门了,你还不来?
  17. EasyExcel导出添加水印
  18. Flow-edge Guided Video Completion
  19. UBOOT 字库相关
  20. 【随笔记】我与Java的故事

热门文章

  1. JavaScript学习总结(四)——逻辑OR运算符详解
  2. 若依前后端部署之后验证码不显示
  3. 使用java读取文件并输出
  4. java生成验证码并进行验证
  5. 当当网首页——CSS代码
  6. C++字符串分割替换 ubuntu版本
  7. 西瓜显示服务器错误,西瓜云服务器
  8. ssh无密码登陆权威指南
  9. php cdi_通过MicroProfile上下文传播增强了CDI上下文和隔板
  10. 大文件拆分小文件求top_将文件拆分为流