本文整理汇总了Scala中com.lightbend.lagom.scaladsl.api.broker.Topic类的典型用法代码示例。如果您正苦于以下问题:Scala Topic类的具体用法?Scala Topic怎么用?Scala Topic使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Topic类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Scala代码示例。
示例1: HelloServiceImpl
//设置package包名称以及导入依赖的类
package sample.helloworld.impl
import com.lightbend.lagom.scaladsl.api.ServiceCall
import com.lightbend.lagom.scaladsl.api.broker.Topic
import com.lightbend.lagom.scaladsl.broker.TopicProducer
import com.lightbend.lagom.scaladsl.persistence.{EventStreamElement, PersistentEntityRegistry}
import sample.helloworld.api.model.GreetingMessage
import sample.helloworld.api.HelloService
class HelloServiceImpl(persistentEntityRegistry: PersistentEntityRegistry) extends HelloService {
override def hello(id: String) = ServiceCall { _ =>
// Look up the Hello entity for the given ID.
val ref = persistentEntityRegistry.refFor[HelloEntity](id)
// Ask the entity the Hello command.
ref.ask(Hello(id, None))
}
override def useGreeting(id: String) = ServiceCall { request =>
// Look up the Hello entity for the given ID.
val ref = persistentEntityRegistry.refFor[HelloEntity](id)
// Tell the entity to use the greeting message specified.
ref.ask(UseGreetingMessage(request.message))
}
override def greetingsTopic(): Topic[GreetingMessage] = {
TopicProducer.singleStreamWithOffset {
offset =>
persistentEntityRegistry.eventStream(HelloEventTag.instance, offset)
.map(ev => (convertEvent(ev), offset))
}
}
private def convertEvent(helloEvent: EventStreamElement[HelloEvent]): GreetingMessage = {
helloEvent.event match {
case GreetingMessageChanged(msg) => GreetingMessage(msg)
}
}
}
开发者ID:knoldus,项目名称:lagom-scala-wordcount.g8,代码行数:44,代码来源:HelloServiceImpl.scala
示例2: useGreeting
//设置package包名称以及导入依赖的类
package sample.helloworld.api
import akka.{Done, NotUsed}
import com.lightbend.lagom.scaladsl.api.broker.Topic
import com.lightbend.lagom.scaladsl.api.{Service, ServiceCall}
import sample.helloworld.api.model.GreetingMessage
def useGreeting(id: String): ServiceCall[GreetingMessage, Done]
override final def descriptor = {
import Service._
// @formatter:off
named("hello").withCalls(
pathCall("/api/hello/:id", hello _),
pathCall("/api/hello/:id", useGreeting _)
).withTopics(
topic(HelloService.TOPIC_NAME, greetingsTopic)
).withAutoAcl(true)
// @formatter:on
}
// The topic handle
def greetingsTopic(): Topic[GreetingMessage]
}
object HelloService {
val TOPIC_NAME = "wordCount"
}
开发者ID:knoldus,项目名称:lagom-scala-wordcount.g8,代码行数:30,代码来源:HelloService.scala
示例3: Item
//设置package包名称以及导入依赖的类
package demo.api.basket
import akka.NotUsed
import com.lightbend.lagom.scaladsl.api.broker.Topic
import com.lightbend.lagom.scaladsl.api.{Descriptor, Service, ServiceCall}
import com.lightbend.lagom.scaladsl.api.transport._
import demo.api.basket.ExtraTransportExceptions.CustomExceptionSerializer
import play.api.Environment
import play.api.libs.json.{Format, Json}
case class Item(name: String, price: Int)
object Item {
implicit val itemFormat: Format[Item] = Json.format
}
case class Basket(items: Seq[Item], total: Int)
object Basket {
implicit val basketFormat: Format[Basket] = Json.format
}
case class OrderPlaced(basketId: String, basket: Basket)
object OrderPlaced {
implicit val orderPlacedFormat: Format[OrderPlaced] = Json.format
}
trait BasketService extends Service {
def getBasket(basketId: String): ServiceCall[NotUsed, Basket]
def getTotal(basketId: String): ServiceCall[NotUsed, Int]
def addItem(basketId: String): ServiceCall[Item, NotUsed]
def clearAll(basketId: String): ServiceCall[NotUsed, NotUsed]
def placeOrder(basketId: String): ServiceCall[NotUsed, NotUsed]
def placedOrders: Topic[OrderPlaced]
override def descriptor: Descriptor = {
import Method._
import Service._
named("basket").withCalls(
restCall(GET, "/basket/:basketId", getBasket _),
restCall(GET, "/basket/:basketId/total", getTotal _),
restCall(POST, "/basket/:basketId/items", addItem _),
restCall(DELETE, "/basket/:basketId/items", clearAll _),
restCall(POST, "/basket/:basketId/order", placeOrder _)
).withTopics(
topic("placed-orders", placedOrders)
).withExceptionSerializer(new CustomExceptionSerializer(Environment.simple()))
}
}
开发者ID:tommpy,项目名称:demo-lagom-checkout,代码行数:49,代码来源:BasketService.scala
示例4: BasketServiceImpl
//设置package包名称以及导入依赖的类
package demo.impl.basket
import akka.NotUsed
import com.lightbend.lagom.scaladsl.api.ServiceCall
import com.lightbend.lagom.scaladsl.api.broker.Topic
import com.lightbend.lagom.scaladsl.broker.TopicProducer
import com.lightbend.lagom.scaladsl.persistence.PersistentEntity.InvalidCommandException
import com.lightbend.lagom.scaladsl.persistence.{EventStreamElement, PersistentEntityRegistry}
import demo.api.basket.{Basket, BasketService, ExtraTransportExceptions, Item}
import scala.collection.immutable
import scala.concurrent.ExecutionContext
class BasketServiceImpl(persistentEntities: PersistentEntityRegistry)(implicit ec: ExecutionContext)
extends BasketService with ExtraTransportExceptions{
override def getBasket(basketId: String): ServiceCall[NotUsed, Basket] = ServiceCall { req =>
persistentEntities.refFor[BasketEntity](basketId).ask(GetBasket)
}
override def addItem(basketId: String): ServiceCall[Item, NotUsed] = ServiceCall { item =>
persistentEntities.refFor[BasketEntity](basketId).ask(AddItem(item))
.map(_ => NotUsed)
.recoverWith {
case e: InvalidCommandException => throw BadRequest(e.message)
}
}
override def getTotal(basketId: String): ServiceCall[NotUsed, Int] = ServiceCall { req =>
persistentEntities.refFor[BasketEntity](basketId).ask(GetTotal)
}
override def clearAll(basketId: String): ServiceCall[NotUsed, NotUsed] = ServiceCall { req =>
persistentEntities.refFor[BasketEntity](basketId).ask(ClearAll)
.map(x => NotUsed)
.recoverWith {
case e: InvalidCommandException => throw BadRequest(e.message)
}
}
override def placeOrder(basketId: String): ServiceCall[NotUsed, NotUsed] = ServiceCall { req =>
persistentEntities.refFor[BasketEntity](basketId).ask(PlaceOrder)
.map(x => NotUsed)
.recoverWith {
case e: InvalidCommandException => throw BadRequest(e.message)
}
}
override def placedOrders: Topic[demo.api.basket.OrderPlaced] =
TopicProducer.taggedStreamWithOffset(BasketEntityEvent.Tag.allTags.to[immutable.Seq]) { (tag, offset) =>
persistentEntities.eventStream(tag, offset).collect {
case EventStreamElement(t, OrderPlaced(id, basket), o) => {
demo.api.basket.OrderPlaced(id, basket) -> o
}
}
}
}
开发者ID:tommpy,项目名称:demo-lagom-checkout,代码行数:57,代码来源:BasketServiceImpl.scala
示例5: BasketServiceImpl
//设置package包名称以及导入依赖的类
package demo.impl.basket
import akka.NotUsed
import com.lightbend.lagom.scaladsl.api.ServiceCall
import com.lightbend.lagom.scaladsl.api.broker.Topic
import com.lightbend.lagom.scaladsl.broker.TopicProducer
import com.lightbend.lagom.scaladsl.persistence.PersistentEntity.InvalidCommandException
import com.lightbend.lagom.scaladsl.persistence.{EventStreamElement, PersistentEntityRegistry}
import demo.api.basket.{Basket, BasketService, ExtraTransportExceptions, Item}
import scala.collection.immutable
import scala.concurrent.ExecutionContext
class BasketServiceImpl(persistentEntities: PersistentEntityRegistry)(implicit ec: ExecutionContext)
extends BasketService with ExtraTransportExceptions{
override def getBasket(basketId: String): ServiceCall[NotUsed, Basket] = ServiceCall { req =>
persistentEntities.refFor[BasketEntity](basketId).ask(GetBasket)
}
override def addItem(basketId: String): ServiceCall[Item, NotUsed] = ServiceCall { item =>
persistentEntities.refFor[BasketEntity](basketId).ask(AddItem(item))
.map(_ => NotUsed)
.recoverWith {
case e: InvalidCommandException => throw BadRequest(e.message)
}
}
override def getTotal(basketId: String): ServiceCall[NotUsed, Int] = ServiceCall { req =>
persistentEntities.refFor[BasketEntity](basketId).ask(GetTotal)
}
override def clearAll(basketId: String): ServiceCall[NotUsed, NotUsed] = ServiceCall { req =>
persistentEntities.refFor[BasketEntity](basketId).ask(ClearAll)
.map(x => NotUsed)
.recoverWith {
case e: InvalidCommandException => throw BadRequest(e.message)
}
}
override def placeOrder(basketId: String): ServiceCall[NotUsed, NotUsed] = ServiceCall { req =>
persistentEntities.refFor[BasketEntity](basketId).ask(PlaceOrder).map(_ => NotUsed)
}
override def placedOrders: Topic[demo.api.basket.OrderPlaced] =
TopicProducer.taggedStreamWithOffset(BasketEntityEvent.Tag.allTags.to[immutable.Seq]) { (tag, offset) =>
persistentEntities.eventStream(tag, offset).collect {
case EventStreamElement(t, OrderPlaced(id, basket), o) => {
demo.api.basket.OrderPlaced(id, basket) -> o
}
}
}
}
开发者ID:tommpy,项目名称:demo-lagom-checkout,代码行数:53,代码来源:BasketServiceImpl.scala
示例6: Item
//设置package包名称以及导入依赖的类
package demo.api.basket
import akka.NotUsed
import com.lightbend.lagom.scaladsl.api.broker.Topic
import com.lightbend.lagom.scaladsl.api.{Descriptor, Service, ServiceCall}
import com.lightbend.lagom.scaladsl.api.transport._
import play.api.libs.json.{Format, Json}
case class Item(name: String, price: Int)
object Item {
implicit val itemFormat: Format[Item] = Json.format
}
case class Basket(items: Seq[Item], total: Int)
object Basket {
implicit val basketFormat: Format[Basket] = Json.format
}
case class OrderPlaced(basketId: String, basket: Basket)
object OrderPlaced {
implicit val orderPlacedFormat: Format[OrderPlaced] = Json.format
}
trait BasketService extends Service {
def getBasket(basketId: String): ServiceCall[NotUsed, Basket]
def getTotal(basketId: String): ServiceCall[NotUsed, Int]
def addItem(basketId: String): ServiceCall[Item, NotUsed]
def clearAll(basketId: String): ServiceCall[NotUsed, NotUsed]
def placeOrder(basketId: String): ServiceCall[NotUsed, NotUsed]
def placedOrders: Topic[OrderPlaced]
override def descriptor: Descriptor = {
import Method._
import Service._
named("basket").withCalls(
restCall(GET, "/basket/:basketId", getBasket _),
restCall(GET, "/basket/:basketId/total", getTotal _),
restCall(POST, "/basket/:basketId/items", addItem _),
restCall(DELETE, "/basket/:basketId/items", clearAll _),
restCall(POST, "/basket/:basketId/order", placeOrder _)
).withTopics(
topic("placed-orders", placedOrders)
)
}
}
开发者ID:tommpy,项目名称:demo-lagom-checkout,代码行数:47,代码来源:BasketService.scala
示例7: BasketServiceImpl
//设置package包名称以及导入依赖的类
package demo.impl.basket
import akka.NotUsed
import com.lightbend.lagom.scaladsl.api.ServiceCall
import com.lightbend.lagom.scaladsl.api.broker.Topic
import com.lightbend.lagom.scaladsl.broker.TopicProducer
import com.lightbend.lagom.scaladsl.persistence.{EventStreamElement, PersistentEntityRegistry}
import demo.api.basket.{Basket, BasketService, Item}
import scala.collection.immutable
import scala.concurrent.ExecutionContext
class BasketServiceImpl(persistentEntities: PersistentEntityRegistry)(implicit ec: ExecutionContext)
extends BasketService {
override def getBasket(basketId: String): ServiceCall[NotUsed, Basket] = ServiceCall { req =>
persistentEntities.refFor[BasketEntity](basketId).ask(GetBasket)
}
override def addItem(basketId: String): ServiceCall[Item, NotUsed] = ServiceCall { item =>
persistentEntities.refFor[BasketEntity](basketId).ask(AddItem(item)).map(_ => NotUsed)
}
override def getTotal(basketId: String): ServiceCall[NotUsed, Int] = ServiceCall { req =>
persistentEntities.refFor[BasketEntity](basketId).ask(GetTotal)
}
override def clearAll(basketId: String): ServiceCall[NotUsed, NotUsed] = ServiceCall { req =>
persistentEntities.refFor[BasketEntity](basketId).ask(ClearAll).map(x => NotUsed)
}
override def placeOrder(basketId: String): ServiceCall[NotUsed, NotUsed] = ServiceCall { req =>
persistentEntities.refFor[BasketEntity](basketId).ask(PlaceOrder).map(_ => NotUsed)
}
override def placedOrders: Topic[demo.api.basket.OrderPlaced] =
TopicProducer.taggedStreamWithOffset(BasketEntityEvent.Tag.allTags.to[immutable.Seq]) { (tag, offset) =>
persistentEntities.eventStream(tag, offset).collect {
case EventStreamElement(t, OrderPlaced(id, basket), o) => {
demo.api.basket.OrderPlaced(id, basket) -> o
}
}
}
}
开发者ID:tommpy,项目名称:demo-lagom-checkout,代码行数:44,代码来源:BasketServiceImpl.scala
示例8: createMonitor
//设置package包名称以及导入依赖的类
package org.wex.cmsfs.monitor.api
import com.lightbend.lagom.scaladsl.api.broker.Topic
import com.lightbend.lagom.scaladsl.api.{Service, ServiceCall}
trait MonitorService extends Service {
def createMonitor: ServiceCall[Monitor, Monitor]
def monitorCollectEvents(): Topic[MonitorEvent]
override final def descriptor = {
import Service._
named("monitor").withCalls(
pathCall("/api/monitor", createMonitor _)
).withTopics(
topic("monitor-collect", monitorCollectEvents)
)
}
}
开发者ID:shinhwazx160,项目名称:test,代码行数:21,代码来源:MonitorService.scala
示例9: AddServiceImpl
//设置package包名称以及导入依赖的类
package com.orion.add.impl
import akka.Done
import com.lightbend.lagom.scaladsl.api.ServiceCall
import com.lightbend.lagom.scaladsl.api.broker.Topic
import com.lightbend.lagom.scaladsl.broker.TopicProducer
import com.lightbend.lagom.scaladsl.persistence.{EventStreamElement, PersistentEntityRegistry}
import com.orion.add.api
import com.orion.add.api.AddService
class AddServiceImpl(persistentEntityRegistry: PersistentEntityRegistry) extends AddService {
override def add(): ServiceCall[api.AddNumber, String] = ServiceCall { request =>
val ref = persistentEntityRegistry.refFor[NumberEntity]("constant")
ref.ask(AddNumber(request.number))
}
override def curry(): ServiceCall[api.CurryWith, Done] = ServiceCall { request =>
val ref = persistentEntityRegistry.refFor[NumberEntity]("constant")
ref.ask(CurryWith(request.number))
}
override def additionTopic(): Topic[api.CurriedWith] =
TopicProducer.singleStreamWithOffset {
fromOffset =>
persistentEntityRegistry.eventStream(NumberEvent.Tags, fromOffset)
.map(ev => (convertEvent(ev), ev.offset))
}
private def convertEvent(numberEvent: EventStreamElement[NumberEvent]): api.CurriedWith = {
numberEvent.event match {
case CurriedWith(num) => api.CurriedWith(num)
}
}
}
开发者ID:utsavgupta,项目名称:add-lagom,代码行数:38,代码来源:AddServiceImpl.scala
示例10: SagaService
//设置package包名称以及导入依赖的类
package com.example.saga.api
import akka.{Done, NotUsed}
import com.lightbend.lagom.scaladsl.api.broker.Topic
import com.lightbend.lagom.scaladsl.api.{Service, ServiceCall}
import play.api.libs.json.{Format, Json}
object SagaService{
val EXONE_TOPIC_NAME = "sagaExOneEvents"
}
trait SagaService extends Service {
def sageExOneEvents(): Topic[SagaExOneEvent]
def begin: ServiceCall[SagaRequest, String]
override final def descriptor = {
import Service._
// @formatter:off
named("saga-lagom").withCalls(
pathCall("/api/saga/:id", getResult _),
pathCall("/api/saga", begin _)
).withTopics(
topic(SagaService.EXONE_TOPIC_NAME, sageExOneEvents)
).withAutoAcl(true)
// @formatter:on
}
}
case class SagaRequest(id: String)
object SagaRequest {
implicit val format: Format[SagaRequest] = Json.format[SagaRequest]
}
case class SagaResponse(id: String, value:String)
object SagaResponse {
implicit val format: Format[SagaResponse] = Json.format[SagaResponse]
}
case class SagaExOneEvent(id: String)
object SagaExOneEvent {
implicit val format: Format[SagaExOneEvent] = Json.format[SagaExOneEvent]
}
开发者ID:dsugden,项目名称:saga-lagom,代码行数:50,代码来源:SagaService.scala
示例11: ExOneService
//设置package包名称以及导入依赖的类
package com.example.exone.api
import com.lightbend.lagom.scaladsl.api.Service
import com.lightbend.lagom.scaladsl.api.broker.Topic
import com.lightbend.lagom.scaladsl.persistence.{AggregateEvent, AggregateEventTag, AggregateEventTagger}
import play.api.libs.json.{Format, Json}
object ExOneService {
val TOPIC_NAME = "exoneEvents"
}
trait ExOneService extends Service {
def exOneEvents(): Topic[ExOneEvent]
override final def descriptor = {
import Service._
named("exonedocs").withTopics(
topic(ExOneService.TOPIC_NAME, exOneEvents)
).withAutoAcl(true)
}
}
case class ExOneEvent(id:String, value:String) extends AggregateEvent[ExOneEvent]{
override def aggregateTag: AggregateEventTagger[ExOneEvent] = ExOneEvent.Tag
}
object ExOneEvent{
val NumShards = 4
val Tag = AggregateEventTag.sharded[ExOneEvent](4)
implicit val format: Format[ExOneEvent] = Json.format[ExOneEvent]
}
开发者ID:dsugden,项目名称:saga-lagom,代码行数:36,代码来源:ExOneService.scala
示例12: HelloServiceImpl
//设置package包名称以及导入依赖的类
package com.example.hello.impl
import com.example.hello.api
import com.example.hello.api.{HelloService}
import com.lightbend.lagom.scaladsl.api.ServiceCall
import com.lightbend.lagom.scaladsl.api.broker.Topic
import com.lightbend.lagom.scaladsl.broker.TopicProducer
import com.lightbend.lagom.scaladsl.persistence.{EventStreamElement, PersistentEntityRegistry}
class HelloServiceImpl(persistentEntityRegistry: PersistentEntityRegistry) extends HelloService {
override def hello(id: String) = ServiceCall { _ =>
// Look up the Hello entity for the given ID.
val ref = persistentEntityRegistry.refFor[HelloEntity](id)
// Ask the entity the Hello command.
ref.ask(Hello(id))
}
override def useGreeting(id: String) = ServiceCall { request =>
// Look up the Hello entity for the given ID.
val ref = persistentEntityRegistry.refFor[HelloEntity](id)
// Tell the entity to use the greeting message specified.
ref.ask(UseGreetingMessage(request.message))
}
override def greetingsTopic(): Topic[api.GreetingMessageChanged] =
TopicProducer.singleStreamWithOffset {
fromOffset =>
persistentEntityRegistry.eventStream(HelloEvent.Tag, fromOffset)
.map(ev => (convertEvent(ev), ev.offset))
}
private def convertEvent(helloEvent: EventStreamElement[HelloEvent]): api.GreetingMessageChanged = {
helloEvent.event match {
case GreetingMessageChanged(msg) => api.GreetingMessageChanged(helloEvent.entityId, msg)
}
}
}
开发者ID:namelos,项目名称:lagom-spike,代码行数:43,代码来源:HelloServiceImpl.scala
示例13: useGreeting
//设置package包名称以及导入依赖的类
package sample.helloworld.api
import akka.{Done, NotUsed}
import com.lightbend.lagom.scaladsl.api.broker.Topic
import com.lightbend.lagom.scaladsl.api.{Descriptor, Service, ServiceCall}
import sample.helloworld.api.model.GreetingMessage
def useGreeting(id: String): ServiceCall[GreetingMessage, Done]
override final def descriptor: Descriptor = {
import Service._
// @formatter:off
named("hello").withCalls(
pathCall("/api/hello/:id", hello _),
pathCall("/api/hello/:id", useGreeting _)
).withTopics(
topic(HelloService.TOPIC_NAME, greetingsTopic)
).withAutoAcl(true)
// @formatter:on
}
// The topic handle
def greetingsTopic(): Topic[GreetingMessage]
}
object HelloService {
val TOPIC_NAME = "wordCount"
}
开发者ID:knoldus,项目名称:lagom-play-spike.g8,代码行数:30,代码来源:HelloService.scala
示例14: HelloServiceImpl
//设置package包名称以及导入依赖的类
package sample.helloworld.impl
import akka.{Done, NotUsed}
import com.lightbend.lagom.scaladsl.api.ServiceCall
import com.lightbend.lagom.scaladsl.api.broker.Topic
import com.lightbend.lagom.scaladsl.broker.TopicProducer
import com.lightbend.lagom.scaladsl.persistence.{EventStreamElement, PersistentEntityRegistry}
import sample.helloworld.api.model.GreetingMessage
import sample.helloworld.api.HelloService
class HelloServiceImpl(persistentEntityRegistry: PersistentEntityRegistry) extends HelloService {
override def hello(id: String): ServiceCall[NotUsed, _root_.sample.helloworld.impl.Hello#ReplyType] = ServiceCall { _ =>
// Look up the Hello entity for the given ID.
val ref = persistentEntityRegistry.refFor[HelloEntity](id)
// Ask the entity the Hello command.
ref.ask(Hello(id, None))
}
override def useGreeting(id: String): ServiceCall[GreetingMessage, Done] = ServiceCall { request =>
// Look up the Hello entity for the given ID.
val ref = persistentEntityRegistry.refFor[HelloEntity](id)
// Tell the entity to use the greeting message specified.
ref.ask(UseGreetingMessage(request.message))
}
override def greetingsTopic(): Topic[GreetingMessage] = {
TopicProducer.singleStreamWithOffset {
offset =>
persistentEntityRegistry.eventStream(HelloEventTag.instance, offset)
.map(ev => (convertEvent(ev), offset))
}
}
private def convertEvent(helloEvent: EventStreamElement[HelloEvent]): GreetingMessage = {
helloEvent.event match {
case GreetingMessageChanged(msg) => GreetingMessage(msg)
}
}
}
开发者ID:knoldus,项目名称:lagom-play-spike.g8,代码行数:45,代码来源:HelloServiceImpl.scala
示例15: GithubServiceImpl
//设置package包名称以及导入依赖的类
package com.onedrop.github.impl
import com.lightbend.lagom.scaladsl.api.ServiceCall
import com.lightbend.lagom.scaladsl.api.broker.Topic
import com.lightbend.lagom.scaladsl.broker.TopicProducer
import com.lightbend.lagom.scaladsl.persistence.{EventStreamElement, PersistentEntityRegistry}
import com.onedrop.github
import com.onedrop.github.api.GithubService
class GithubServiceImpl(persistentEntityRegistry: PersistentEntityRegistry) extends GithubService {
override def getOrg(org: String) = ServiceCall { _ =>
// Look up the github entity for the given ID.
val ref = persistentEntityRegistry.refFor[GithubEntity](id)
// Ask the entity the Hello command.
ref.ask(Hello(id))
}
override def getMembers(org: String) = ServiceCall { request =>
// Look up the github entity for the given ID.
val ref = persistentEntityRegistry.refFor[GithubEntity](id)
// Tell the entity to use the greeting message specified.
ref.ask(UseGreetingMessage(request.message))
}
override def getRepos(org: String): Topic[github.api.GreetingMessageChanged] =
TopicProducer.singleStreamWithOffset {
fromOffset =>
persistentEntityRegistry.eventStream(GithubEvent.Tag, fromOffset)
.map(ev => (convertEvent(ev), ev.offset))
}
private def convertEvent(helloEvent: EventStreamElement[GithubEvent]): github.api.GreetingMessageChanged = {
helloEvent.event match {
case GreetingMessageChanged(msg) => github.api.GreetingMessageChanged(helloEvent.entityId, msg)
}
}
}
开发者ID:jewelsjacobs,项目名称:one-drop-test,代码行数:43,代码来源:GithubServiceImpl.scala
示例16: LagomhelloServiceImpl
//设置package包名称以及导入依赖的类
package de.breitbandig.lagomhello.impl
import de.breitbandig.lagomhello.api
import de.breitbandig.lagomhello.api.{LagomhelloService}
import com.lightbend.lagom.scaladsl.api.ServiceCall
import com.lightbend.lagom.scaladsl.api.broker.Topic
import com.lightbend.lagom.scaladsl.broker.TopicProducer
import com.lightbend.lagom.scaladsl.persistence.{EventStreamElement, PersistentEntityRegistry}
class LagomhelloServiceImpl(persistentEntityRegistry: PersistentEntityRegistry) extends LagomhelloService {
override def hello(id: String) = ServiceCall { _ =>
// Look up the lagom-hello entity for the given ID.
val ref = persistentEntityRegistry.refFor[LagomhelloEntity](id)
// Ask the entity the Hello command.
ref.ask(Hello(id))
}
override def useGreeting(id: String) = ServiceCall { request =>
// Look up the lagom-hello entity for the given ID.
val ref = persistentEntityRegistry.refFor[LagomhelloEntity](id)
// Tell the entity to use the greeting message specified.
ref.ask(UseGreetingMessage(request.message))
}
override def greetingsTopic(): Topic[api.GreetingMessageChanged] =
TopicProducer.singleStreamWithOffset {
fromOffset =>
persistentEntityRegistry.eventStream(LagomhelloEvent.Tag, fromOffset)
.map(ev => (convertEvent(ev), ev.offset))
}
private def convertEvent(helloEvent: EventStreamElement[LagomhelloEvent]): api.GreetingMessageChanged = {
helloEvent.event match {
case GreetingMessageChanged(msg) => api.GreetingMessageChanged(helloEvent.entityId, msg)
}
}
}
开发者ID:aanno,项目名称:lagom-hello,代码行数:43,代码来源:LagomhelloServiceImpl.scala
示例17: AlphaApplication
//设置package包名称以及导入依赖的类
package com.lightbend.lagom.scaladsl.testkit
import akka.persistence.query.Offset
import akka.stream.scaladsl.Source
import akka.stream.testkit.scaladsl.TestSink
import com.lightbend.lagom.scaladsl.api.broker.Topic
import com.lightbend.lagom.scaladsl.broker.TopicProducer
import com.lightbend.lagom.scaladsl.persistence.cassandra.CassandraPersistenceComponents
import com.lightbend.lagom.scaladsl.playjson.EmptyJsonSerializerRegistry
import com.lightbend.lagom.scaladsl.server.{ LagomApplication, LagomApplicationContext, LagomServer, LocalServiceLocator }
import com.lightbend.lagom.scaladsl.testkit.services.{ AlphaEvent, AlphaService }
import org.scalatest.{ AsyncWordSpec, Matchers }
import play.api.libs.ws.ahc.AhcWSComponents
abstract class AlphaApplication(context: LagomApplicationContext)
extends LagomApplication(context)
with CassandraPersistenceComponents
with TestTopicComponents
with AhcWSComponents {
override lazy val lagomServer = serverFor[AlphaService](new AlphaServiceImpl())
override lazy val jsonSerializerRegistry = EmptyJsonSerializerRegistry
}
class AlphaServiceImpl extends AlphaService {
override def messages: Topic[AlphaEvent] =
TopicProducer.singleStreamWithOffset { offset =>
val events = (1 to 10).filter(_ % 2 == 0).map(AlphaEvent.apply)
Source(events).map(event => (event, Offset.sequence(event.message / 2)))
}
}
class TopicPublishingSpec extends AsyncWordSpec with Matchers {
"The AlphaService" should {
"publish events on alpha topic" in ServiceTest.withServer(ServiceTest.defaultSetup) { ctx =>
new AlphaApplication(ctx) with LocalServiceLocator
} { server =>
implicit val system = server.actorSystem
implicit val mat = server.materializer
val client: AlphaService = server.serviceClient.implement[AlphaService]
val source = client.messages.subscribe.atMostOnceSource
source.runWith(TestSink.probe[AlphaEvent])
.request(1)
.expectNext should ===(AlphaEvent(2))
}
}
}
开发者ID:lagom,项目名称:lagom,代码行数:55,代码来源:TopicPublishingSpec.scala
示例18: ProducerStubSpec
//设置package包名称以及导入依赖的类
package com.lightbend.lagom.scaladsl.testkit
import com.lightbend.lagom.scaladsl.api.broker.Topic
import com.lightbend.lagom.scaladsl.server.{ LagomApplicationContext, LocalServiceLocator }
import com.lightbend.lagom.scaladsl.testkit.services._
import org.scalatest.concurrent.Eventually
import org.scalatest.time.{ Seconds, Span }
import org.scalatest.{ BeforeAndAfterAll, Matchers, WordSpec }
class ProducerStubSpec extends WordSpec with Matchers with BeforeAndAfterAll with Eventually {
var producerStub: ProducerStub[AlphaEvent] = _
private val stubbedApplication: LagomApplicationContext => DownstreamApplication = {
ctx =>
new DownstreamApplication(ctx) with LocalServiceLocator {
val stubFactory = new ProducerStubFactory(actorSystem, materializer)
producerStub = stubFactory.producer[AlphaEvent](AlphaService.TOPIC_ID)
override lazy val alphaService = new AlphaServiceStub(producerStub)
}
}
"The ProducerStub" should {
"send message to consuming services" in ServiceTest.withServer(ServiceTest.defaultSetup)(stubbedApplication) { server =>
implicit val exCtx = server.application.actorSystem.dispatcher
producerStub.send(AlphaEvent(22))
eventually(timeout(Span(5, Seconds))) {
server.serviceClient.implement[CharlieService].messages.invoke().map { response =>
response should ===(Seq(ReceivedMessage("A", 22)))
}.recover {
case t: Throwable => fail(t)
}
}
}
}
}
class AlphaServiceStub(stub: ProducerStub[AlphaEvent]) extends AlphaService {
override def messages: Topic[AlphaEvent] = stub.topic
}
开发者ID:lagom,项目名称:lagom,代码行数:43,代码来源:ProducerStubSpec.scala
示例19: HelloService
//设置package包名称以及导入依赖的类
package docs.scaladsl.mb
import akka.{Done, NotUsed}
//#hello-service
import com.lightbend.lagom.scaladsl.api.broker.Topic
import com.lightbend.lagom.scaladsl.api.{Service, ServiceCall}
import play.api.libs.json.{Format, Json}
object HelloService {
val TOPIC_NAME = "greetings"
}
trait HelloService extends Service {
override final def descriptor = {
import Service._
named("brokerdocs").withCalls(
pathCall("/api/hello/:id", hello _),
pathCall("/api/hello/:id", useGreeting _)
).withTopics(
topic(HelloService.TOPIC_NAME, greetingsTopic)
).withAutoAcl(true)
}
// The topic handle
def greetingsTopic() : Topic [GreetingMessage]
def hello(id: String): ServiceCall[NotUsed, String]
def useGreeting(id: String): ServiceCall[GreetingMessage, Done]
}
//#hello-service
case class GreetingMessage(message: String)
object GreetingMessage {
implicit val format: Format[GreetingMessage] = Json.format[GreetingMessage]
}
开发者ID:lagom,项目名称:lagom,代码行数:39,代码来源:HelloService.scala
示例20: TestServiceClient
//设置package包名称以及导入依赖的类
package com.lightbend.lagom.scaladsl.client
import com.lightbend.lagom.scaladsl.api.{ Descriptor, Service, ServiceCall }
import com.lightbend.lagom.scaladsl.api.broker.Topic
import scala.collection.immutable
object TestServiceClient extends ServiceClientConstructor {
override def construct[S <: Service](constructor: (ServiceClientImplementationContext) => S): S = {
constructor(new ServiceClientImplementationContext {
override def resolve(descriptor: Descriptor): ServiceClientContext = {
new ServiceClientContext {
override def createServiceCall[Request, Response](methodName: String, params: immutable.Seq[Any]): ServiceCall[Request, Response] = {
TestServiceCall(descriptor, methodName, params)
}
override def createTopic[Message](methodName: String): Topic[Message] = {
TestTopic(descriptor, methodName)
}
}
}
})
}
}
开发者ID:lagom,项目名称:lagom,代码行数:24,代码来源:TestServiceClient.scala
注:本文中的com.lightbend.lagom.scaladsl.api.broker.Topic类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论