Requirement is to collect the data with in cuttoff time say 3 sec by 
invoking web service multiple times and return only latest invoked data

c1 <- "result 1" // In real scenario this taking almost 1 seconds as in 
real scenario it's taking Part chunk of data from Web Service

Something like... Expecting data from c1 <- GetPartWebServiceData("request 
3") //at least I should get this data!?


package main

import "time"
import "fmt"

func main() {

    c1 := make(chan string, 1)
    
    go func() {
  
        c1 <- GetPartWebServiceData("request 1") //say try 6 times
        c1 <- GetPartWebServiceData("request 2")
        c1 <- GetPartWebServiceData("request 3") //at least I should get 
this data!?
        c1 <- GetPartWebServiceData("request 4")
        c1 <- GetPartWebServiceData("request 5")
        c1 <- GetPartWebServiceData("request 6")
    }()

        select {
            case res := <-c1: //here program get out without waiting 3 
seconds because it got the data
                fmt.Println(res)
            case <-time.After(time.Second * 4):
                fmt.Println("timeout")
        }
}

func GetPartWebServiceData(request string) string{
    time.Sleep(time.Second * 1) // Time Consuming work returning part value
    partResponse := "Response for " + request  //some response
    return partResponse
}



On Sunday, August 6, 2017 at 4:03:08 PM UTC+5:30, snmed wrote:
>
> Hi 
>
> What are you trying to solve? Your channel has a capacity of 1, the first 
> write to c1 is successful but the second write to c1 is blocked until it 
> has been read in the select statement. And therefore you print the first 
> value written to c1.
>
> I recommend you to read this 
> https://golang.org/doc/effective_go.html#channels documentation about 
> channels.
>
> Cheers snmed
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to