首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Akka中完成Cassandra写入操作时收到通知

在Akka中完成Cassandra写入操作时收到通知
EN

Stack Overflow用户
提问于 2013-10-02 07:00:34
回答 2查看 629关注 0票数 0

this Akka and Cassandra tutorial中,integration test that writes to Cassandra and expects to read back the same data在写入和读取之间插入1秒的延迟。该延迟允许写请求通过网络传输并在服务器上进行处理。这是必要的,因为application calls session.executeAsync向Cassandra发送请求,并且在不处理来自Cassandra的响应的情况下继续:

代码语言:javascript
复制
class TweetWriterActor(cluster: Cluster) extends Actor {
  val session = cluster.connect(Keyspaces.akkaCassandra)
  val preparedStatement = session.prepare("INSERT INTO tweets(key, user_user, text, createdat) VALUES (?, ?, ?, ?);")

  def saveTweet(tweet: Tweet): Unit =
    session.executeAsync(preparedStatement.bind(tweet.id.id, tweet.user.user, tweet.text.text, tweet.createdAt))

  def receive: Receive = {
    case tweets: List[Tweet] => tweets.foreach(saveTweet)
    case tweet: Tweet        => saveTweet(tweet)
  }
}

完成写入请求所需的时间通常不到1秒,因此,如果在尝试读取之前收到写入已完成的通知,则测试可以运行得更快。在坚持非阻塞I/O操作的同时,您将如何更改代码来实现这一点?

EN

回答 2

Stack Overflow用户

发布于 2013-10-02 07:15:58

executeAsync returns java,您可以等待或附加一些回调(这要归功于它从ListenableFuture实现的事实)。一般的替代方案可能是从akka内部使用sync api。

票数 2
EN

Stack Overflow用户

发布于 2015-02-28 03:41:14

Apache Cassandra和Datastax Enterprise的官方Scala驱动程序是phantom,完全支持CQL3.0。

Phantom是在Websudos开发的,它是Datastax的官方合作伙伴,明确地为所有其他驱动程序提供超级种子。它正在积极地开发和维护,完全支持所有最新的Cassandra功能。

要在写入完成时得到“通知”,您可以使用默认的接口:SomeTable.update.where(_.id eqs id).update(name setTo "test").future()

这将返回Future[ResultSet],当将来完成时,操作也会返回。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19127411

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档