只是想确保我知道Ack-ing在Storm中是如何工作的.我有1个喷口和2个螺栓链在一起.Spout向Bolt1发出元组,而Bolt1又向Bolt 2发出一个元组.我希望Bolt 2能够从Spout发出的初始元组,我不确定如何.
为了保证容错(即:重新发送元组),我想在螺栓2中确认Spout发出的元组,以防万一它在过程中的某个地方失败,因此可以重新发送.
考虑这个例子:
喷口:
_collector.emit(new Values(queue.dequeue())
Run Code Online (Sandbox Code Playgroud)
Bolt1:
def execute(tuple: Tuple) {
_collector.emit(tuple, new Values("stuff"))
}
Run Code Online (Sandbox Code Playgroud)
在这一点上,元组是由喷口发送的元组.我可以在这里说它没有问题.现在添加另一个监听Bolt1发出的元组的螺栓.
Bolt2:
def execute(tuple2: Tuple) {
_collector.emit(tuple2, new Values("foo"))
}
Run Code Online (Sandbox Code Playgroud)
此时tuple2中的元组是从Bolt1发送的元组(其中包含字符串"stuff"的元组).
因此,如果我在Bolt2中发送一个ack,这将从Bolt1中获取元组,而不是从Spout发送的元组.正确?
我如何识别从喷口发出的元组?我应该把所有其他喷口上的初始喷口扛回来,这样我就可以在最后一个螺栓上找回它并确认它吗?
我阅读了Nathan的教程,我得到的印象是,在发出tuple2后,我可以在那里收到Bolt1(来自Spout)收到的元组.这会将新发出的tuple2链接到Spout发送的原始元组,所以当Bolt2确认元组2时,它实际上会从Spout中获取原始元组.这是真的?
如果我在解释中遗漏了某些内容,请告诉我.
我正在尝试从这个文档在Win 7机器上创建一个基本的akka集群:http://doc.akka.io/docs/akka/snapshot/scala/cluster-usage.html
我运行种子节点时遇到错误(下面有更多内容)
AdriansClusterSystem-akka.actor.default-dispa tcher-16] [akka:// AdriansClusterSystem/system/endpointManager/reliableEndpointWr iter-akka.tcp%3A%2F%2FAdriansClusterSystem%40127.0.0.1%3A2552-3/endpointWriter]删除消息[来自[akka.tcp:// ClusterSys tem@127.0.0.1:2552]的非本地收件人[Act或[akka.tcp://ClusterSystem@127.0.0.1:2552 /]]的类akka.actor.SelectChildName]入站地址为[akka.tcp://AdriansClusterSystem@127.0 .0.1:2552]
问题: 为什么我收到此错误?我是否遗漏了akka文档中的内容?
我的.conf文件:
我添加了这个额外的行*到上面的URL列出的文件*
enabled-transports = ["akka.remote.netty.tcp"]
akka {
actor {
provider = "akka.cluster.ClusterActorRefProvider"
}
remote {
enabled-transports = ["akka.remote.netty.tcp"] <--added this from remoting
log-remote-lifecycle-events = off
netty.tcp {
hostname = "127.0.0.1"
port = 0
}
}
cluster {
seed-nodes = [
"akka.tcp://ClusterSystem@127.0.0.1:2551",
"akka.tcp://ClusterSystem@127.0.0.1:2552"]
auto-down = on
}
}
Run Code Online (Sandbox Code Playgroud)
我启动了2个节点,每个节点都在不同的sbt窗口中
Run Code Online (Sandbox Code Playgroud)run-main sample.cluster.simple.SimpleClusterApp 2551 run-main sample.cluster.simple.SimpleClusterApp 2552
这两个启动都很好,然后反复显示一条ERROR
消息:
mybuild:-:0.0.1-SNAPSHOT>`run-main sample.cluster.simple.SimpleClusterApp 2552`
[warn] Credentials file C:\Users\amocanu\.ivy2\.credentials …
Run Code Online (Sandbox Code Playgroud) 我有一个卡桑德拉问题.你知道Cassandra如何更新/增加计数器吗?
我想使用风暴螺栓(来自github上的storm-contrib repo的CassandraCounterBatchingBolt)写入cassandra.但是,我不知道怎么样了一些incrementCounterColumn的实现()方法的工作..而且还有与卡桑德拉计数器限制(来源:中http://wiki.apache.org/cassandra/Counters),这使得他们对我的情景无用恕我直言:
如果写入意外失败(超时或失去与协调器节点的连接),则客户端将不知道是否已执行操作.重试可导致CASSANDRA-2495过多计数.
反移除本质上是有限的.例如,如果您非常快速地发出序列"递增,删除,递增",则删除可能会丢失
无论如何,这是我的场景:
我更新相同的计数器比更新传播到其他Cassandra节点更快.
示例:
假设我有3个cassandra节点.每个节点上的计数器为0.节点
1:0,节点2 :0,节点3 :0增量到来:5 - > Node1:0,node2:0,node3:0
增量从节点2开始 - 仍然需要传播到node1和node3节点
1:0,节点2 :5,节点3 :0与此同时,在
传播前一个增量之前,另一个增量到达:3 - > Node1:0,node2:5,node3:0假设3个在不同于5个
起始点的节点上启动,我们有:Node1:3,node2:5,node3:0
现在,如果3传播到其他节点AS AN INCREMENT而不是作为新值传播(并且5相同),那么最终节点将全部等于8,这就是我想要的.
如果3覆盖5(因为它有一个更晚的时间戳)这是有问题的 - 不是我想要的.
你知道Cassandra如何处理这些更新/增量吗?
注意,写入之前的读取仍然容易受到同一问题的影响,这取决于读取执行的副本节点(如果传播距离不远,仲裁仍然会失败)
我也在想,也许放一个缓存b/w我的风暴螺栓和Cassandra可以解决这个问题,但这是另一个故事.
我有一个JTable
填充自定义DataModel
(粘贴在下面),当我调用该populate()
方法时,它似乎用重复数据填充表 - 每一行都反复填充相同的值.然而,仔细检查(通过简单地println()'数据'字段),数据模型没有错 - 它以我期望的格式保存正确的数据.是什么赋予了?
import java.util.ArrayList;
import javax.swing.table.AbstractTableModel;
@SuppressWarnings("serial") // we don't expect this app to ever use serialized classes. EVER.
public class CollectionDataModel extends AbstractTableModel {
private ArrayList<ArrayList<String>> data;
public CollectionDataModel() {
data = new ArrayList<ArrayList<String>>();
}
@Override
public int getColumnCount() {
if(data.isEmpty()) return 0;
return data.get(0).size();
}
@Override
public int getRowCount() {
return data.size();
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
if(rowIndex > getRowCount()) return null;
if(columnIndex …
Run Code Online (Sandbox Code Playgroud) 我正在尝试从C#应用程序发送带有我网站地址的电子邮件.
直到最近,这个工作好几个月.(也许我的提供者改变了一些事情或其他人改变了设置)
这是代码:
private void sendEmail(Email invite) {
MailMessage mail = new MailMessage();
SmtpClient SmtpServer = new SmtpClient(smtpServerName);
mail.From = new MailAddress(emailUsername);
mail.To.Add(invite.RecipientEmail);
mail.Subject = invite.MessageSubject;
mail.Body = invite.MessageBody;
SmtpServer.UseDefaultCredentials = false;
SmtpServer.Port = 587;
SmtpServer.Credentials = new System.Net.NetworkCredential(emailUsername, emailPassword);
// SmtpServer.EnableSsl = true;
SmtpServer.Send(mail);
}
Run Code Online (Sandbox Code Playgroud)
这是错误:
SMTP服务器需要安全连接或客户端未经过身份验证.服务器响应是:需要SMTP身份验证.
看看其他问题,我尝试了他们的建议SmtpServer.EnableSsl = true
.这根本不起作用.它给出了以下内容:
System.Net.Mail.SmtpException:服务器不支持安全连接.
我猜我应该禁用SSL并按原样使用它.
有关如何重新发送电子邮件的建议吗?
编辑
我已经尝试过没有SmtpServer.UseDefaultCredentials = false;
我试过它设置为true:SmtpServer.UseDefaultCredentials =true;
我已经尝试评论该行以及以下内容//SmtpServer.Credentials = new System.Net.NetworkCredential(emailUsername, emailPassword);
编写一个程序来找到最大可能的字母矩形,这样每行形成一个单词(从左到右),每一列形成一个单词(从上到下).
我发现了这个有趣的问题.这不是家庭作业,尽管听起来可能如此.(我不在学校).我这样做是为了好玩.
例
从cat,car,ape,api,rep,tip我们得到以下矩形(这是一个正方形):
Run Code Online (Sandbox Code Playgroud)c a r a p e t i p
我最初的想法是构建一种前缀树,以便我可以检索以特定字符串开头的所有单词.当我们已经有2个或更多单词(从上到下或从左到右阅读)并且我们需要找到要添加的下一个单词时,这将非常有用.
还有其他想法吗?
编辑
这可以用长方体(3D矩形)来完成吗?
如果它需要在对角线上有有效的单词怎么办(想法信用:user645466); 如何优化它的算法?
我有一个Eclipse工作区,如下所示:
workspace/
ProjectA/
src/
ProjectThatDependsOnA/
src/
Run Code Online (Sandbox Code Playgroud)
在Eclipse中,我可以进入Project Properties并编辑ProjectThatDependsOnA的java构建路径以包含"ProjectA".我应该在ProjectThatDependsOnA中的build.gradle中放置什么来在Gradle中复制此行为?
我正在创建扩展Actor的多个特征.然后我想创建一个使用其中一些特征的actor类.但是,我不确定如何在Actor类的receive方法中组合所有traits的receive方法.
性状:
trait ServerLocatorTrait extends Actor {
def receive() = {
case "s" => println("I'm server ")
}
}
trait ServiceRegistrationTrait extends Actor {
def receive() = {
case "r" => println("I'm registration ")
}
}
Run Code Online (Sandbox Code Playgroud)
演员:
class FinalActor extends Actor with ServiceRegistrationTrait with ServerLocatorTrait {
override def receive = {
super.receive orElse ??? <--- what to put here
}
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我送"r"
,并"s"
给FinalActor
它去只有ServerLocatorTrait
-这是最后的特质补充说.所以现在它的工作方式是它认为超级最后添加的特性,所以在这种情况下ServerLocatorTrait
问题:
如何组合所有特征的接收方法FinalActor
?
PS - 我见过演员的react …
我尝试将artifactory设置为docker注册表,如本视频所示:http://www.jfrog.com/video/artifactory-docker-integration/
但是,我没有在artifactory中安装SSL,因此我使用了--insecure-registry标志.(如docker build publish插件中的错误和远程访问私有docker-registry中所示)
无论如何,我不知道如何找出作为docker注册表URL的神器,所以我可以这样做:curl -k -uusername:password" http://sdpvvrwm812.ib.tor.company.com:8081/artifactory/api/docker/docker-images "
这个页面http://www.jfrog.com/confluence/display/RTF/Docker+Repositories在底部显示可能需要一个称为反向代理的东西?这是真的,如果是这样,我该如何安装这样的东西?
在C#中,我正在启动第三方应用程序,需要2-3个小时才能完成.我需要Process的输出实时写入控制台.我已经做了研究BeginOutputReadLine()
,并RedirectStandardOutput
从微软的网站,但我的代码仍然没有工作.
目前我的代码只显示进程完成时的输出.我不知道它出了什么问题.
static void Main(string[] args)
{
Process process;
process = new Process();
process.StartInfo.FileName = "C:\\ffmbc\\ffmbc.exe";
process.StartInfo.Arguments = "-i \\\\dssp-isi-t\\TMD\\B002C010_130520_R2R7.2398v5.mxf -an -vcodec libx264 -level 4.1 -preset veryslow -tune film -x264opts bluray-compat=1:weightp=0:bframes=3:nal-hrd=vbr:vbv-maxrate=40000:vbv-bufsize=30000:keyint=24:b-pyramid=strict:slices=4:aud=1:colorprim=bt709:transfer=bt709:colormatrix=bt709:sar=1/1:ref=4 -b 30M -bt 30M -threads 0 -pass 1 -y \\\\dss-isi-t\\MTPO_Transfer\\dbay\\B002C010_130520_R2R7.2398v5.mxf.h264";
process.StartInfo.UseShellExecute = false;
process.StartInfo.CreateNoWindow = true;
process.StartInfo.RedirectStandardOutput = true;
process.OutputDataReceived += new DataReceivedEventHandler(OutputHandler);
process.StartInfo.RedirectStandardInput = true;
process.Start();
process.BeginOutputReadLine();
process.WaitForExit();
process.Close();
}
private static void OutputHandler(object sendingProcess, DataReceivedEventArgs outLine)
{
string line;
line = (outLine.Data.ToString());
Console.WriteLine(line); …
Run Code Online (Sandbox Code Playgroud) actor ×2
akka ×2
apache-storm ×2
c# ×2
java ×2
scala ×2
akka-cluster ×1
algorithm ×1
artifactory ×1
cassandra ×1
distributed ×1
docker ×1
eclipse ×1
gradle ×1
jtable ×1
np-hard ×1
optimization ×1
smtp ×1
smtpclient ×1
swing ×1
traits ×1