小编Adr*_*ian的帖子

在一系列螺栓中在Storm中确认的正确方法

只是想确保我知道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中获取原始元组.这是真的?

如果我在解释中遗漏了某些内容,请告诉我.

distributed-computing apache-storm

24
推荐指数
2
解决办法
8477
查看次数

akka群集种子节点给出错误:为非本地收件人丢弃消息

我正在尝试从这个文档在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-main sample.cluster.simple.SimpleClusterApp 2551  
run-main sample.cluster.simple.SimpleClusterApp 2552
Run Code Online (Sandbox Code Playgroud)

这两个启动都很好,然后反复显示一条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)

scala actor akka akka-cluster

16
推荐指数
1
解决办法
8275
查看次数

如何在没有陈旧性的情况下快速增加Cassandra的计数器

我有一个卡桑德拉问题.你知道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可以解决这个问题,但这是另一个故事.

distributed cassandra apache-storm

16
推荐指数
1
解决办法
6364
查看次数

行中的JTable重复值

我有一个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)

java swing jtable

12
推荐指数
1
解决办法
1万
查看次数

System.Net.Mail.SmtpException:SMTP服务器需要安全连接或客户端未经过身份验证

我正在尝试从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);

c# smtp smtpclient

12
推荐指数
3
解决办法
4万
查看次数

最大可能的字母矩形

编写一个程序来找到最大可能的字母矩形,这样每行形成一个单词(从左到右),每一列形成一个单词(从上到下).

我发现了这个有趣的问题.这不是家庭作业,尽管听起来可能如此.(我不在学校).我这样做是为了好玩.

cat,car,ape,api,rep,tip我们得到以下矩形(这是一个正方形):

c a r
a p e
t i p
Run Code Online (Sandbox Code Playgroud)

我最初的想法是构建一种前缀树,以便我可以检索以特定字符串开头的所有单词.当我们已经有2个或更多单词(从上到下或从左到右阅读)并且我们需要找到要添加的下一个单词时,这将非常有用.

还有其他想法吗?

编辑

这可以用长方体(3D矩形)来完成吗?

如果它需要在对角线上有有效的单词怎么办(想法信用:user645466); 如何优化它的算法?

algorithm optimization np-hard

11
推荐指数
1
解决办法
2725
查看次数

在Eclipse中的Java构建路径中拥有另一个项目的等价物是什么?

我有一个Eclipse工作区,如下所示:

workspace/  
  ProjectA/  
    src/  
  ProjectThatDependsOnA/   
    src/  
Run Code Online (Sandbox Code Playgroud)

在Eclipse中,我可以进入Project Properties并编辑ProjectThatDependsOnA的java构建路径以包含"ProjectA".我应该在ProjectThatDependsOnA中的build.gradle中放置什么来在Gradle中复制此行为?

java eclipse gradle

10
推荐指数
2
解决办法
3134
查看次数

在akka Actors中堆叠多个特征

我正在创建扩展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 …

scala traits actor akka

10
推荐指数
1
解决办法
3294
查看次数

artifactory作为docker注册表

我尝试将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在底部显示可能需要一个称为反向代理的东西?这是真的,如果是这样,我该如何安装这样的东西?

artifactory docker

10
推荐指数
1
解决办法
1万
查看次数

C#实时显示Process的输出

在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)

c#

9
推荐指数
2
解决办法
7867
查看次数