长版:
我是erlang的新手,并考虑将其用于可扩展的架构.我发现该平台的许多支持者都在宣传其可靠性和容错性.
但是,我很难准确理解在这个消息在瞬态内存中排队的系统中如何实现容错.我知道可以安排一个主管层级来重新生成已故的流程,但我一直无法找到很多关于重生工作对正在进行的工作的影响的讨论.在飞行中的消息和在垂死节点上丢失的部分完成的工作的工件会发生什么?
当消费者进程死亡时,所有生成器是否会自动重新传输未被确认的消息?如果没有,这怎么可以被认为是容错的?如果是这样的话,是什么阻止了被处理的消息 - 但不是很确认 - 被重新传输,因此不适当地重新处理?
(我认识到这些问题不是erlang独有的;在任何分布式处理系统中都会出现类似的问题.但是erlang爱好者似乎声称平台让这一切变得"简单"......?)
假设重新传输消息,我可以很容易地想象出一个复杂的消息链的下游影响在发生故障后可能变得非常混乱的情况.如果没有某种繁重的分布式事务系统,我不明白如何在不解决每个进程中的重复的情况下保持一致性和正确性.我的应用程序代码是否必须始终强制执行约束以防止事务被多次执行?
精简版:
分布式erlang进程是否受重复消息的影响?如果是这样,是重复保护(即,幂等)应用程序的责任,还是erlang/OTP以某种方式帮助我们?
是否有免费的API或其他方式来确定手机号码注册的运营商?
我希望我的应用程序能够在没有从列表中选择载体的情况下广播文本消息.
更新: 有趣的是,一位同事找到了答案:http://developer.whitepages.com/
更新2: 白页许可协议是如此严格,以至于您无法为其构建应用程序.还有其他想法吗?
更新3:
在某些时候,有人删除了我的更新2.这将它放回去.更重要的是,截至2015年10月19日,服务条款仍处于无法合法利用其服务的状态.
我们的一些合作伙伴告诉我们,我们的软件需要与企业服务总线进行交互.在对此进行了一些研究后,我的直觉就是说这只是嗡嗡声说我们需要一种以平台为依据的方式来回传递消息.我只是想了解我们的合作伙伴告诉我们的事情.我是否正确地拒绝合作伙伴的要求,只是试图让我们的软件更符合流行语,或者他们是否告诉我们应该听的东西(即使用buzzspeak编码)?
我一直在研究各种通信技术/体系结构/模式/实现(阅读:流行语),包括Web服务(WCF,Axis2),ESB,SOA,并希望了解有关消息传递的JMS.
从概念上讲,JMS听起来很简单.我的看法是它是一个中间代理,管理来自发布者的消息并将它们路由到适当的订阅者.这是通过在发布消息时对消息进行排队,并在收到消息时将它们出列来完成的.
问题1:我对JMS的基本理解是否正确?
在阅读有关技术时,让我烦恼的一件事就是当某个特征(有意或无意)挥手时.
根据我的基本理解,必须运行JMS提供程序才能发送或接收消息.我对发布的假设是JMS提供程序只是等待消息发布,然后将其存储在队列中(内存或数据库支持,具体取决于实现).但是,我不太确定接收是如何工作的.
问题2:如果没有消息可以接收(通常)阻止?
问题2b:如果是这样,阻塞是如何实现的?客户端是否不断轮询消息?在发布消息之前,服务器是否只是不响应(如何在没有超时的情况下工作?)提供者是否会向接收者发起呼叫?
问题2c:如果没有,如何确保及时收到消息,而不影响性能?
基本描述似乎倾向于单个JMS提供程序,以确保集中管理消息而不会丢失.我可以看到缩放是一个问题.
问题3:JMS如何扩展?
在扩展时,我可以看到存在复杂性以确保将单个消息传递给所有适当的订户,而不管哪个物理服务器接收到该消息.
问题3b:JMS实施如何确保在规模化环境中可靠交付?
请注意,虽然这些问题与JMS有关,但它们可能适用于任何消息传递基础结构.我欢迎特定于JMS的答案以及那些更通用或甚至特定于其他技术的答案.
如果你想在Windows下使用排队产品进行持久消息传递,运行.NET 2.0及更高版本,那么今天存在哪些MSMQ替代品?我知道ActiveMQ(http://activemq.apache.org/),我看过WSMQ的引用(指向http://wsmq.net),但该网站似乎已经关闭.
还有其他选择吗?
ZeroMQ作为通用消息传递中间件的经验是什么?
sleep(1)退出前".我很难绕过这个概念.
我正在尝试实现一个端点,该端点在tcp端口上侦听专有格式的传入消息,然后转换消息并让camel接管转发和路由.
我是否正确理解了生产者是负责发送消息到Endpoint和Consumer来自该终端接收呢?
在研究接口时,我无法弄清楚这些对象之间的消息流,特别是在消费者部分.Consumer只定义start()和stop()方法......
在骨架实现上设置测试时,在端点和生产者对象上Camel调用.之后,它返回,与消费者或与之相关的处理器开始做任何事情.createProducer()process()
有人能指出我正确的方向吗?
我正在创建一个类似于gmail和facebook的线程消息系统,其中收件箱列出显示主题的最新线程,发件人的姓名和最新消息的时间戳.
这是我的表格如何设置:
users:
user_id
user_name
thread:
thread_id
title
to_id
to_keep
to_read
from_id
from_keep
date
message:
message_id
thread_id
to_id
from_id
message_text
date
Run Code Online (Sandbox Code Playgroud)
我现在正在做的是当用户创建新消息时,它在线程表中创建一个新线程,然后在消息表中创建一个新消息,如果用户响应一个线程,它会复制当前线程.线程表,除了它的交换to_id和from_id,然后创建基于一个新的消息.
此外,对于收件箱视图,我只能基于a查询所有线程user_id.所以,SELECT * FROM thread WHERE to_id = 2 and to_keep = TRUE ORDER BY date DESC或者如果我想在发件箱中查看消息,那就像是SELECT * FROM thread WHERE from_id = 2 and from_keep = TRUE ORDER BY date DESC.
如果用户在有新消息时打开一个线程,则to_read会更新为true UPDATE thread SET to_read = TRUE WHERE thread_id = 4.
我觉得我过度复杂化这个过程,应该有更好的方法来做到这一点.
任何帮助或想法将不胜感激.
这样我就可以从线程表中选择所有内容,然后使用user表进行连接,以显示我需要的所有内容.但是我觉得应该有更好的方法来做到这一点.
我来自MoM的背景.我想我从概念上理解ESB.但是,在建筑方面做出选择时,我不太确定两者之间的实际差异.
这是我想知道的
1)任何在线的良好链接可以帮助我在这方面.
2)有人可以告诉我使用一个在另一个上有意义.
任何帮助都会有用.
消息总线[1]和消息代理[2]之间的区别是什么
正如我所看到的,唯一相关的区别是用来代表每一个的图片.
如果之间存在一些差异,请告诉我什么.
如果它们是相同的,请告诉我为什么两个概念引用相同的功能.
谢谢.
[1] http://www.eaipatterns.com/MessageBus.html
[2] http://www.eaipatterns.com/MessageBroker.html
messaging ×10
soa ×3
esb ×2
integration ×2
java ×2
.net ×1
apache-camel ×1
eai ×1
erlang ×1
jms ×1
mom ×1
msmq ×1
php ×1
reliability ×1
routing ×1
sql ×1
text ×1
transactions ×1
zeromq ×1