- 浏览: 4402805 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (163)
- 职场 && 心情 (22)
- Java/Basic (17)
- Java/Compression (7)
- Java/Security (20)
- Java/Maven (3)
- Java/Cache (11)
- Eclipse (4)
- Spring (19)
- ORM/Hibernate (2)
- ORM/iBatis (3)
- DB/NoSQL (11)
- DB/MySQL (7)
- DB/MS SQL Server (4)
- OS/Linux (11)
- OS/Mac (7)
- C/C++ (4)
- Server Architecture/Basic (13)
- Server Architecture/Distributed (17)
- Moblie/Andriod (2)
- WebService (3)
- Objective-C (1)
- Html (1)
- 设计模式 (1)
- Scala (0)
- Kafka (1)
最新评论
-
w47_csdn:
证书安装:在"浏览"选项中选择" ...
Java加密技术(九)——初探SSL -
w47_csdn:
spiritfrog 写道你好,我按照你的步骤,tomcat中 ...
Java加密技术(九)——初探SSL -
liuyachao111:
11楼说的对 用@ControllerAdvicepublic ...
Spring 注解学习手札(八)补遗——@ExceptionHandler -
irayslu:
作者你好, 我把你的源码放在jdk6, jdk7 中运行正常, ...
Java加密技术(五)——非对称加密算法的由来DH -
夏季浅忆-卖小子:
为什么不能解压rar格式的压缩包呢
Java压缩技术(三) ZIP解压缩——Java原生实现
接上一篇 征服Kestrel,介绍XMemcached对于Kestrel的支持实现。
关于XMemcached具体代码,可以参考Memcached笔记——(二)XMemcached&Spring集成
这里为了代码简洁,直接使用Spring+XMemcached集成模式,先给出Spring的配置文件:
注意:这里要使用KestrelCommandFactory
注意:KestrelCommandFactory会在数据头加一个4字节的flag,支持存储任意可序列化类型。(从我的理解就是标记消息长度 )。如果收发双方Client不同,为确保移植性,需要将数据转为String格式,舍弃这个flag!
如果开启上述选项,则不能支持序列化操作,仅支持String类型!!!
附kestrel.properties:
做一个简要的TestUnit:
可通过上述代码进行服务的简要测试,同样可作为Kestrel+XMemcached接入项目的参考实现!
简述:
队列服务,都是基本概念,队首出队,队尾入队,适用于异步消息传输。
Kestrel基本参照Memcached协议,可恢复,确保服务重启后可以保存重启前的消息队列,也就是不会丢消息。
依靠XMemcahed,可以做Kestrel集群,分布式扩充Kestrel服务!
相关工程代码,详见附件!
相关链接:
征服 Kestrel
征服 Kestrel + XMemcached
征服 Kestrel + XMemcached + Spring TaskExecutor
踩,也是一种关注。。。哈哈哈
关于XMemcached具体代码,可以参考Memcached笔记——(二)XMemcached&Spring集成
这里为了代码简洁,直接使用Spring+XMemcached集成模式,先给出Spring的配置文件:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd" > <!-- http://code.google.com/p/xmemcached/wiki/Spring_Integration --> <bean id="memcachedClientBuilder" class="net.rubyeye.xmemcached.XMemcachedClientBuilder" p:connectionPoolSize="${kestrel.connectionPoolSize}" p:failureMode="${kestrel.failureMode}" > <!-- XMemcachedClientBuilder have two arguments.First is server list,and second is weights array. --> <constructor-arg> <list> <bean class="java.net.InetSocketAddress"> <constructor-arg> <value>${kestrel.server1.host}</value> </constructor-arg> <constructor-arg> <value>${kestrel.server1.port}</value> </constructor-arg> </bean> </list> </constructor-arg> <constructor-arg> <list> <value>${kestrel.server1.weight}</value> </list> </constructor-arg> <property name="commandFactory"> <bean class="net.rubyeye.xmemcached.command.KestrelCommandFactory" /> </property> <property name="sessionLocator"> <bean class="net.rubyeye.xmemcached.impl.KetamaMemcachedSessionLocator" /> </property> <property name="transcoder"> <bean class="net.rubyeye.xmemcached.transcoders.SerializingTranscoder" /> </property> </bean> <!-- Use factory bean to build memcached client --> <bean id="memcachedClient" factory-bean="memcachedClientBuilder" factory-method="build" destroy-method="shutdown" /> </beans>
注意:这里要使用KestrelCommandFactory
<property name="commandFactory"> <bean class="net.rubyeye.xmemcached.command.KestrelCommandFactory" /> </property>
注意:KestrelCommandFactory会在数据头加一个4字节的flag,支持存储任意可序列化类型。(从我的理解就是标记消息长度 )。如果收发双方Client不同,为确保移植性,需要将数据转为String格式,舍弃这个flag!
<bean id="memcachedClient" factory-bean="memcachedClientBuilder" factory-method="build" destroy-method="shutdown" > <!-- 如果收发双方使用Client不同,开启该选项 --> <property name="primitiveAsString" value="true" /> </bean>
如果开启上述选项,则不能支持序列化操作,仅支持String类型!!!
附kestrel.properties:
#连接池大小即客户端个数 kestrel.connectionPoolSize=50 kestrel.failureMode=true #server1 kestrel.server1.host=10.11.155.24 kestrel.server1.port=22133 kestrel.server1.weight=1
做一个简要的TestUnit:
import static junit.framework.Assert.*; import net.rubyeye.xmemcached.MemcachedClient; import org.junit.Before; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; /** * Kestrel 测试 * * @author Snowolf * @version 1.0 * @since 1.0 */ public class KestrelTest { // 队列名称 private final static String QUEUE_NAME = "KQ"; private ApplicationContext app; private MemcachedClient memcachedClient; /** * @throws java.lang.Exception */ @Before public void before() throws Exception { app = new ClassPathXmlApplicationContext("applicationContext.xml"); memcachedClient = (MemcachedClient) app.getBean("memcachedClient"); } /** * 发包测试 */ @Test public void send() { for (int i = 0; i < 100; i++) { try { memcachedClient.set(QUEUE_NAME, 0, i); } catch (Exception e) { fail(e.getMessage()); e.printStackTrace(); } } } /** * 收包测试 */ @Test public void receive() { Integer value; try { while (true) { value = (Integer) memcachedClient.get(QUEUE_NAME); if (value == null) { break; } System.out.println(value); } } catch (Exception e) { fail(e.getMessage()); e.printStackTrace(); } } }
可通过上述代码进行服务的简要测试,同样可作为Kestrel+XMemcached接入项目的参考实现!
简述:
- 发包服务持续将数据SET到队列KQ中
- 收包服务持续将数据从队列KE中GET出来
队列服务,都是基本概念,队首出队,队尾入队,适用于异步消息传输。
Kestrel基本参照Memcached协议,可恢复,确保服务重启后可以保存重启前的消息队列,也就是不会丢消息。
依靠XMemcahed,可以做Kestrel集群,分布式扩充Kestrel服务!
相关工程代码,详见附件!
相关链接:
征服 Kestrel
征服 Kestrel + XMemcached
征服 Kestrel + XMemcached + Spring TaskExecutor
- kestrel.zip (14.9 KB)
- 下载次数: 99
评论
3 楼
snowolf
2012-08-21
cpjsjxy 写道
亲,怎么被踩的这么狠?
踩,也是一种关注。。。哈哈哈
2 楼
cpjsjxy
2012-08-21
亲,怎么被踩的这么狠?
1 楼
qq443507232
2012-07-30
始终跑在技术最前边
发表评论
-
Thrift小记
2013-03-14 18:37 7879Thrit用的不多,也不够深入,这里小记一笔。 关于Th ... -
征服 Redis + Jedis + Spring (三)—— 列表操作
2013-03-06 16:16 84095一开始以为Spring下操 ... -
Nginx扩展(一):nginx_tcp_proxy_module
2013-01-15 16:41 20860好东西必须持续钻研,且持续积累,尤其要做个笔记。 今天是 ... -
DisplayTag POI支持——Excel文件导出中文乱码问题&包依赖问题-解决
2012-09-29 15:11 7050DisplayTag,可能大部分人都用过,也知道他非常的方便。 ... -
Memcached笔记——(四)应对高并发攻击
2012-09-13 09:48 29065近半个月过得很痛苦,主要是产品上线后,引来无数机器用户恶意 ... -
征服 Redis + Jedis + Spring (二)—— 哈希表操作(HMGET HMSET)
2012-08-29 18:29 82412不得不说,用哈希操作来存对象,有点自讨苦吃! 不过,既然 ... -
征服 Redis + Jedis + Spring (一)—— 配置&常规操作(GET SET DEL)
2012-08-29 16:30 157642有日子没写博客了,真的是忙得要疯掉。 完成项目基础架构搭建 ... -
Redis集群服务器-高可用调研随笔
2012-08-22 22:24 28950今天改了一天的Bug,本 ... -
征服 Mongodb 之 安装与系统服务配置
2012-08-16 18:47 13638今天补点旧账,去年搭建系统时,曾想用Mongodb做 ... -
征服 Redis + Jedis
2012-08-15 17:49 83559用Memcached,对于缓存对象大小有要求,单个对象不得 ... -
征服 Redis
2012-08-13 17:05 86388大约一年多前,公司同事开始使用Redis,不清楚是配置,还是 ... -
Mountain Lion 升级后Java不可用问题补救
2012-07-31 08:10 7994升级到Mountain Lion后,让我最头痛的是原来的jdk ... -
征服 Kestrel + XMemcached + Spring TaskExecutor
2012-07-30 14:43 6268上一篇征服 Kestrel + XMemcached只是对Ke ... -
征服 Kestrel
2012-07-23 18:33 13313因为要面对高并发PUSH需求,考虑将其按队列方式实现,最终选型 ... -
Java操作Excel文件导入
2012-06-27 17:33 65154用Excel作为数据源,通过Java Web进行导入,需要PO ... -
征服 Nginx + Tomcat
2012-05-24 17:35 267982年前一直折腾Apache,现如今更习惯Nginx。 搭建网站 ... -
征服 Nginx
2012-04-25 13:12 10362赶上要配置测试服务器,赶上Nginx-1.2.0 stable ... -
JVM学习笔记——内存跟踪
2012-04-12 10:35 0引用 jmap Usage: jmap [optio ... -
Memcached笔记——(二)XMemcached&Spring集成
2012-04-01 09:55 42413今天研究Memcached的Java的Client,使用XMe ... -
Memcached笔记——(一)安装&常规错误&监控
2012-03-09 14:27 3560408年的时候接触过Memcached,当时还对它的客户端产品嗤 ...
相关推荐
标题中的“征服 Kestrel + XMemcached + Spring TaskExecutor”揭示了本次讨论的核心内容,涉及到三个关键的技术组件:Kestrel、XMemcached以及Spring的TaskExecutor。这些技术都是在构建高性能、可扩展的分布式系统...
【Kestrel任务执行者:Kestrel + XMemcached + Spring TaskExecutor】 在Java开发领域,高效的任务调度和执行是关键部分,特别是在分布式系统中。这个项目名为"kestrel-task-executor",它结合了Kestrel消息队列、...
**FastGateway:基于Kestrel+Yarp的高效API网关** FastGateway是一个轻量级且功能强大的API网关,其设计目标是提供一个简单、便捷的解决方案,以支持动态配置路由、集群管理和HTTPS证书配置。它利用了.NET Core中的...
【标题】:“征服 Kestrel” Kestrel,这个名字在IT行业中通常指的是Microsoft开发的一款开源、高性能、异步网络库,它是ASP.NET Core框架的一部分,用于构建web服务器。Kestrel设计的目标是提供一个轻量级、可靠且...
IIS 充当起了反向代理,将流量转发给 Kestrel 并管理 Kestrel 进程。在 Linux 上,我们通常使用 NGINX 作为 Kestrel 的反向代理。 三、设置 Kestrel 在 ASP.NET Core 3.0 及更高版本,Kestrel 属于框架默认的配置...
Kestrel+nginx bootstrap、adminlte、bootstrap-table、bootstrap-select、bootstrap-treeview等 功能说明: 系统管理:角色管理/权限管理,部门管理,用户管理,数据字典 基础资料:物料管理,客户管理,供应商...
Kestrel+nginx bootstrap、adminlte、bootstrap-table、bootstrap-select、bootstrap-treeview等 功能说明: 系统管理:角色管理/权限管理,部门管理,用户管理,数据字典 基础资料:物料管理,客户管理,供应商...
**Kestrel持久化队列服务器详解** Kestrel是一款高性能、轻量级的消息队列系统,最初由Twitter开发并开源。它主要被设计用来处理实时流数据,提供了一个简单的基于HTTP的API来发送和接收消息。Kestrel的一个关键...
在ASP.NET Core中,如果在Kestrel中想使用HTTPS对站点进行加密传输,可以按照如下方式 申请证书 这一步就不详细说了,有免费的和收费的,申请完成之后会给你一个*.pfx结尾的文件。 添加NuGet包 nuget中...
**Kestrel框架详解** Kestrel框架是ASP.NET Core的一部分,它是一个高度可配置、高性能的Web服务器,被设计用于构建跨平台的现代Web应用。Kestrel自.NET Core 1.0版本起就已成为默认的Web服务器,支持Windows、...
资源分类:Python库 所属语言:Python 资源全名:kestrel-lang-1.0.5.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
addlog-kestrel
红隼节点Node.js 的 Kestrel 客户端安装 npm install kestrel.node用法 var Kestrel = require ( 'kestrel.node' ) ;var client = new Kestrel ( 'localhost:22133' ) ;// get can optionally take a timeout in ...
Kestrel以其灵活性和可靠性而著称,被广泛用于ASP.NET Core应用程序的部署。 **一、KestrelHttpServer与libuv的关系** libuv是一个跨平台的异步I/O库,它为多种操作系统提供了统一的API,用于处理网络连接和文件...
Kestrel是不是Unix或Windows的内核。
在某些情况下,当 Nginx 配置不当,尤其是 `Connection` 字段设置为 `Upgrade` 时,可能会导致 Kestrel(ASP.NET Core 的内置 web 服务器)返回 400 错误。这个问题通常与 WebSocket 协议升级有关。 WebSocket 是一...
这篇文章主要是记录如何将Kestrel的服务封装在WindowService中 关于WindowsServer 请参考如下这篇文章 .netcore worker service (辅助角色服务) 的上手入门,包含linux和windows服务部署 开发服务 之前做过.net5...