Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
  • 22:34
    Aaronontheweb synchronize #4209
  • 22:33
    Aaronontheweb synchronize #4209
  • 22:03
    Aaronontheweb closed #2378
  • 22:03
    Aaronontheweb commented #2378
  • 22:02
    Aaronontheweb closed #4232
  • 22:02
    Aaronontheweb commented #4232
  • 21:37
    cptjazz synchronize #4242
  • 21:14

    Aaronontheweb on dev

    close #4246 - no throw inside E… (compare)

  • 21:14
    Aaronontheweb closed #4249
  • 21:14
    Aaronontheweb closed #4246
  • 21:02
    cptjazz commented #4242
  • 20:41
    Arkatufus opened #4253
  • 20:31
    Aaronontheweb synchronize #4212
  • 20:30
    Aaronontheweb commented #4242
  • 20:29
    Aaronontheweb synchronize #4240
  • 20:29
    Aaronontheweb synchronize #4238
  • 20:28
    Aaronontheweb labeled #4252
  • 20:28
    Aaronontheweb synchronize #4252
  • 20:28
    Aaronontheweb opened #4252
  • 20:26

    dependabot-preview[bot] on nuget

    (compare)

Dan
@ctrlaltdan
I could wrap my contracts in another contract which achieves the same but I was trying to both interact natively with the framework and minify my message contracts (to make most of the cosmosdb 1kb=1RU costing model)
Zetanova
@Zetanova
the Sql plugin i know very well, it selfs the manifest string into a column and the payload in a blob column
I guess this answers one question...
Manifest NVARCHAR(500) NOT NULL,
Payload VARBINARY(MAX) NOT NULL,
so not clear if it supports it or not
Dan
@ctrlaltdan

https://github.com/AkkaNetContrib/Akka.Persistence.MongoDB/blob/754c1370f1e7381dd602ae84f1f65cd6fe2b2b2b/src/Akka.Persistence.MongoDb/Journal/MongoDbJournal.cs#L72

And it looks like the mongodb implementation treats the manifest property and the stored type property interchangeably. This wouldnt work with my denormalised "contract name" dto style unless I wrote my own serializer I guess?

Zetanova
@Zetanova
@ctrlaltdan would not use protobuf for long time storage in the first place
Anathema
@BitterAmethyst_twitter
Is there a way to get broken connections to resume transparently? We have an issue where some AV process (IT wont let us disable it...) is causing some connections to be aborted. I'd like them to reconnect and have messages sent while the connection is broken to be buffered until the connection resumes and then resent. Is this possible? I guess it will be difficult since we keep some IActorRefs inside some actors. Our system involves a server process and multiple client processes that all exist on the same physical machine (this is required due to some native interop we do).
Bartosz Sypytkowski
@Horusiath

@BitterAmethyst_twitter default transport layer doesn't cover user-level messages resending (the only resends there are TCP-level package retransmissions). This is for performance reasons and because all communication patterns (including retransmissions) can be composed from simple fire-and-forget message channels.

If you need to resent messages after figuring out the transport issues, you can use something like:

  1. Implement your own resend logic eg. have a list of messages waiting for confirmation, when sending a message, put it on confirmationPending list, and after getting ACK message remove it from there. Additionally add something like periodic Context.System.Scheduler tick to periodically resend all messages from pending list.
  2. AtLeastOnceDeliveryActor from Akka.Persistence. It works more or less like example from above, but adds persistence layer to it and all speed-reduction and complexity coming with it.
  3. Escalate resend responsibility upstream - another option could be i.e. putting a message queue between your actor system and consumer or just go straight to consumer app and implement resends there.

All options require sending some sort of response or ACK message and some form of detecting duplicate messages.

Anathema
@BitterAmethyst_twitter
@Horusiath thanks
Popov Sergei
@F0b0s
Hi there. Does anyone has experience in integration akka .net and MassTransit(RabbitMQ transport)? I would like to schedule some messages in actor and send event with MassTransit.
Zetanova
@Zetanova
A router needs paths and a role to send to routees a messages. Is it possible to send a message to multiple routees by role only over an akka-path? I am searching for some feature to express a group router inside an actorpath. A remote nodeA should send a broadcast message by roleName, but the group router should not be statically defined on this remote nodeA.
Zetanova
@Zetanova
Just to send simply the RouterProps to the remote nodeA ?
Zetanova
@Zetanova
would be something like ActorSelection("akka.router://routerType@roleName/user/parent/child").Tell(msg); possible?
Ebere Abanonu
@eaba
@F0b0s check out my repo: https://github.com/eaba/Hostel
I have since improved on how I use Akka with MassTransit, basically that should give you an idea on to how to use MassTransit IBusControl within an Actor
Alex Michel
@amichel
Hi. Is there any example of how to implement sliding window using Akka.net streams?
Bartosz Sypytkowski
@Horusiath
@amichel - there's a method for that. And there're tests so you can always see some code live.
Alex Michel
@amichel
@Horusiath thanks. My requirement is more complex. I need aggregation on a time-based sliding windows over pairs of streams that don't come at constant rate, so probably I will need some resampling and forward-fill before I can apply this one.
greatmengqi
@greatmengqi
if I edit conf for akka, which plugin should i install ?
there are so many red lines, it make me uncomfortable
I use IDEA
image.png
Bartosz Sypytkowski
@Horusiath
@greatmengqi I'm pretty sure there's a HOCON plugin for Jetbrains products
greatmengqi
@greatmengqi
Thank you ,i will have a try
Alex Michel
@amichel
@greatmengqi there's a HOCON extension for VSCode. Only problem is when HOCON is inside app.config and not external file you need to switch between XML and HOCON
Vladimir Boiarkin
@vladmir-boy
Hi. Can anybody tell me what could be a reason of [ERROR][15.09.2019 11:03:56][Thread 0032][[akka://Sample/system/IO-TCP#1838091985]] Swallowing exception during message send
Cause: Hyperion.ValueSerializers.UnsupportedTypeException: No coercion operator is defined between types 'System.Void*' and 'System.Object'.
at Hyperion.ValueSerializers.UnsupportedTypeSerializer.WriteManifest(Stream stream, SerializerSession session)
at Hyperion.Extensions.StreamEx.WriteObject(Stream stream, Object value, Type valueType, ValueSerializer valueSerializer, Boolean preserveObjectReferences, SerializerSession session)
at lambda_method(Closure , Stream , Object , SerializerSession )
at Akka.Serialization.HyperionSerializer.ToBinary(Object obj)
at Akka.Actor.ActorCell.SerializeAndDeserializePayload(Object obj)
at Akka.Actor.ActorCell.SerializeAndDeserialize(Envelope envelope)
at Akka.Actor.ActorCell.SendMessage(Envelope message) ?
Aaron Stannard
@Aaronontheweb
@vladmir-boy that's pretty amazing
never seen that before with Hyperion
mind filing an issue for it?
@Horusiath wait, there is?
@vladmir-boy specifically, I want to see how on earth Hyperion tried to cast an object to a System.Void
that sounds like the sort of thing that would happen in C++ with a reinterpret_cast
Zetanova
@Zetanova
hi, i face most of the time a problem with lazy loaded routers / remoteDeploy that a lazy created router (ConsistentHashingPool and ConsistentHashingGroup) with a role selector are empty shortly after initialization. I can overcome it with a check of GetRoutees and a Stash. But is there a better way to wait until a router got its routees?
Zetanova
@Zetanova
.. its a bug in ClusterRoutingConfig.cs
will try to make a PR
HermansG
@HermansG
In the class Akka.Actor.ReceiveActor there is protected sealed override void OnReceive(object message) which is sealed.
Why? I am looking for a generic possibility to measure the receive of any message. Like it is possible to hook in on Unhandled.
Zetanova
@Zetanova
@HermansG For generic/base stuff use the ArroundReceive
Bartosz Sypytkowski
@Horusiath
@HermansG you can have custom wrap with AroundReceive and for unhandled messages specifically you can override Unhandled as well
Arjen Smits
@Danthar
@HermansG if your interested in measuring message throughput for akka.net you might want to check out https://phobos.petabridge.com/
evaldast
@evaldast

Hello. Trying to use Akka framework for my project. Guess it's a bit more question of an architecture, however, I am dealing with a state change which losses some of the messages due to logic implemented.
Basically it goes like this:
Actor 1 receives messages for user actions -> Actor 1 decides which actor to forward to based on current status of the user -> Actor 2 sums up user actions and send a message to actor 1 to change state if threshold is hit. -> Actor 1 changes state and will now forward actions to Actor 3.

Basically the problem I am dealing with is that the state changes while there are still messages enqueued to Actor 2 which are now supposed to be routed to Actor 3, since the threshold was hit.

How do I approach this problem? I don't want to Ask() for user's state every time I am processing an action

Zetanova
@Zetanova
@evaldast yes its an architecture issue. You can optionaly switch to akka.streams but dont do it if u currently are low on time.
Simple approach would be to just aggregate the actions in Actor1 directly. An other approach would be to also change the behavior of Actor2 after the treshhold tiggered, so Actor2 sends the rest of the user-actions message back to Actor1 or directly to Actor3
evaldast
@evaldast
Thanks for the reply, yes, I was currently using the second approach you mentioned, wondered if there was a better way to go around this
Zetanova
@Zetanova
and second approach has a side effect, you will loose the message ordering. If the aggregate process need a ordered event stream (user-login before logout) then better to make a simple class (no-actor) that handles the event-message and Actor1 creates an instance of it and processes the user-messages with it
userActionsAggregate.Handle(msg);  
if(userActionsAggregate.IsTriggered) {  Become(Triggered); }
evaldast
@evaldast
No, the aggregate does not care about message order, it aggregates the values of events received and once the sum of a value is hit it moves to next step
I would not mind moving with approach 1 where aggregating is done in the same actor which checks for current status, however, there is quite a bit of heavy lifting involved into aggregation process which I would not like to have in a single actor
Zetanova
@Zetanova
How to run Akka.Cluster.Tests.MultiNode test localy? For me every test gets skipped
Inside VS2017
Aaron Stannard
@Aaronontheweb
@Zetanova I need to finish akkadotnet/akka.net#3901
but to run the build in-ones locally